STM32Cubev6 ADC采樣
工作環(huán)境:
STM32CubeMXv6
Keil5
? ? ADC采樣和時鐘有關(guān),所以我們需要先配置時鐘,打開左側(cè)的下拉框System Core,點擊RCC選項;

????我選用的是8M的外部高速時鐘(以實際情況為準),在下方的配置框中更改High Speed Clock(HSE)為Crystal/Ceramic Resonator;

????配置HSE為8Mhz,PCLK2為108Mhz;

? ? ? ? 打開左側(cè)的下拉框Analog,點擊ADC1選項;

????????勾選IN12,IN13,使能通道12,13

????配置時鐘預(yù)分頻(Clock Prescaler)為4(PCLK2 divided by 4),分辨率(Resolution)為12位(12 bits (15 ADC Clock cycles)),對齊方式(Data Alignment)為右對齊(Right alignment),開啟掃描模式(Scan Conversion Mode)和連續(xù)轉(zhuǎn)換模式(Continuous Conversion Mode),在(End Of Conversion Selection)轉(zhuǎn)換完所有通道后再變化EOC(EOC flag at the end of all conversions)
????ADC常規(guī)轉(zhuǎn)換模式中配置轉(zhuǎn)換次數(shù)(Number Of Conversion)為2,外部觸發(fā)轉(zhuǎn)換為由軟件啟動的定期轉(zhuǎn)換(Regular Conversion launched by software),其中Rank1配置為ADC通道12,Rank2配置為ADC通道13,兩者的采樣時間都為56個周期;

????以在Priority Group中選擇中斷優(yōu)先級組;

? ? 勾選ADC1,ADC2 and ADC3 global interrupts開啟中斷;

?設(shè)置完成后
????點擊Project Manager頁面,輸入工程名和工程位置,選擇工具鏈和IDE為MDK-ARM,版本為5.27;

? ? 打開左側(cè)Code Generater菜單勾選Generate peripheral initialization as a pair of'.c/.h'file per peripheral;?

?
????最后點擊右上角的GENERATE CODE按鈕后生成代碼。
? ??生成代碼后打開工程文件夾,用Keil5打開工程。

???編譯,為了使得我們的代碼盡可能解耦合,所以我們在工程文件夾中新建一個user_adc.c和對應(yīng)的user_adc.h文件,在這個.c文件中我們寫入以下函數(shù)
????在對應(yīng)頭文件user_adc.h中寫入以下內(nèi)容
????在主函數(shù)的include中加入user_adc.h
????在while主循環(huán)中可以通過調(diào)用Get_Adc_Vol函數(shù)得到對應(yīng)通道的電壓值
參考資料:
STM32F7開發(fā)指南-HAL庫版本_V1.1
HAL庫教程12:ADC與DMA采集多路AD值 ? https://yatao.blog.csdn.net/article/details/89326729