導語“在本次教程中我們使用指南者開發板的ADC功能,實現ADC電壓采樣轉換。本項目在USART項目(參考USART章節)的基礎上配置ADC,通過將采集到的數據轉化為電壓值在串口上打印出來。”
第一節 系統要求
?硬件
野火指南者開發板
?軟件
CubeMx &MDK & 串口調試助手
?原理圖
第二節 CubeMX配置
在CubeMx 中設置ADC,選擇PC1對應的11通道,ADC1,參數根據下圖設置:
第三節 MDK代碼編寫
CubeMx 初始化代碼配置后使用MDK打開項目,主main.c 文件中添加電壓轉化函數和定義變量:
float adc_conv_value(uint16_t value);uint16_t adc_value; // 采集到的數據float adc_con_value; // 轉化后的實際電壓值在main.c 的自定義代碼段4編寫轉換函數:/*電壓參考值為3.3V ADC 為12位,4096**/float adc_conv_value(uint16_t value){
return (float)value/4096*3.3; //ADC 轉換后的值轉換為實際的電壓值}
在main函數的主循環while中添加ADC采樣和打印采樣電壓值的函數:
// 代碼開始從這兒寫:HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1, 10);
adc_value=HAL_ADC_GetValue(&hadc1);
printf('ADC1 channel 11 value=%4d\r\n',adc_value);
adc_con_value=adc_conv_value(adc_value);
printf('ADC1 channel 11 real V value=%4.3f\r\n',adc_con_value);HAL_Delay(500);
編譯項目后下載到開發板中。
第四節 效果演示
現在我們通過串口打印采集的實際值和轉換后的電壓值:
可以通過調節滑動變阻器觀察采集到數據變化,value是12位的整數值,realVvalue是轉化后的實際電壓值。
代碼分析:
(1)HALADCStart(&hadc1); 是啟動ADC1轉換。
(2)HALADCPollForConversion(&hadc1, 10);是等待轉換結束。
(3)adcvalue=HALADC_GetValue(&hadc1);是獲取轉換結果。
(4)adcconvalue=adcconvvalue(adc_value);是自定義的轉換結果轉化為實際電壓值的函數。
上一篇:STM32單片機看門狗的配置方法
下一篇:使用STM32調試FMSDR模塊及解調FM電臺(4)
推薦閱讀最新更新時間:2025-04-02 22:07








設計資源 培訓 開發板 精華推薦
- AM22E最小系統板
- DC-DC反激電源基礎仿真電路
- ADL5506-EVALZ,用于 ADL5505 30 MHz 至 4.5 GHz、45 dB 射頻檢波器的評估板
- CMC5001-0M-2210-5,MAX-V CPLD 模塊。 CMC5001 MAX-V 模塊允許在緊湊的外形模塊中實現 CPLD 邏輯功能
- STEVAL-CCA053V1,基于STA333IS的聲音終端,2通道高效數字音頻系統板
- BP5221A帶保護電路降壓DC/DC轉換器典型應用電路
- LT1634BIS8-2.5 單節鋰離子電池監控電路的典型應用 (IQ = 20uA)
- AM2G-1207SH30Z 7.2V 2 瓦 DC-DC 轉換器的典型應用
- AM2G-4805SZ 5V 2 瓦 DC-DC 轉換器的典型應用
- LTC5590 雙路 600MHz 至 1.7GHz 高動態范圍下變頻混頻器的典型應用