STM32CubeMx入門教程(5):ADC應(yīng)用

2023-07-11 16:05:32 來源:嵌入式開發(fā)始站

導(dǎo)語“在本次教程中我們使用指南者開發(fā)板的ADC功能,實(shí)現(xiàn)ADC電壓采樣轉(zhuǎn)換。本項(xiàng)目在USART項(xiàng)目(參考USART章節(jié))的基礎(chǔ)上配置ADC,通過將采集到的數(shù)據(jù)轉(zhuǎn)化為電壓值在串口上打印出來。”

第一節(jié) 系統(tǒng)要求

?硬件


(相關(guān)資料圖)

野火指南者開發(fā)板

?軟件

CubeMx &MDK & 串口調(diào)試助手

?原理圖

第二節(jié) CubeMX配置

在CubeMx 中設(shè)置ADC,選擇PC1對應(yīng)的11通道,ADC1,參數(shù)根據(jù)下圖設(shè)置:

第三節(jié) MDK代碼編寫

CubeMx 初始化代碼配置后使用MDK打開項(xiàng)目,主main.c 文件中添加電壓轉(zhuǎn)化函數(shù)和定義變量:

float adc_conv_value(uint16_t value);uint16_t adc_value;  // 采集到的數(shù)據(jù)float adc_con_value;  // 轉(zhuǎn)化后的實(shí)際電壓值在main.c 的自定義代碼段4編寫轉(zhuǎn)換函數(shù):/*電壓參考值為3.3V ADC 為12位,4096**/float adc_conv_value(uint16_t value){            return (float)value/4096*3.3; //ADC 轉(zhuǎn)換后的值轉(zhuǎn)換為實(shí)際的電壓值}

在main函數(shù)的主循環(huán)while中添加ADC采樣和打印采樣電壓值的函數(shù):

// 代碼開始從這兒寫: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);

編譯項(xiàng)目后下載到開發(fā)板中。

第四節(jié) 效果演示

現(xiàn)在我們通過串口打印采集的實(shí)際值和轉(zhuǎn)換后的電壓值:

可以通過調(diào)節(jié)滑動變阻器觀察采集到數(shù)據(jù)變化,value是12位的整數(shù)值,realVvalue是轉(zhuǎn)化后的實(shí)際電壓值。

代碼分析:

(1)HALADCStart(&hadc1); 是啟動ADC1轉(zhuǎn)換。

(2)HALADCPollForConversion(&hadc1, 10);是等待轉(zhuǎn)換結(jié)束。

(3)adcvalue=HALADC_GetValue(&hadc1);是獲取轉(zhuǎn)換結(jié)果。

(4)adcconvalue=adcconvvalue(adc_value);是自定義的轉(zhuǎn)換結(jié)果轉(zhuǎn)化為實(shí)際電壓值的函數(shù)。

標(biāo)簽:

上一篇:射頻(RF)基本理論
下一篇:最后一頁