概述
本章通過使用模數(shù)轉(zhuǎn)換器(ADC),通過輪詢方式采集多個ADC通道電壓。
之前已經(jīng)做過DMA方式采樣,詳情請查看:
https://blog.csdn.net/qq_24312945/article/details/106557538
硬件準(zhǔn)備
首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開發(fā)板:
選擇芯片型號
使用STM32CUBEMX選擇芯片stm32f030r8,如下所示:
配置時鐘源
HSE與LSE分別為外部高速時鐘和低速時鐘,在本文中使用內(nèi)置的時鐘源,故都選擇Disable選項,如下所示:
配置時鐘樹
STM32F0的最高主頻到48M,所以配置48即可:
串口配置
本次實驗使用的串口1進(jìn)行串口通信,波特率配置為115200。
ADC配置
STM32f030中,有一個ADC(模擬/數(shù)字轉(zhuǎn)換器),每個 ADC 有 12 位、 10 位、 8 位和 6 位可選,每個ADC有16個外部通道、2個內(nèi)部通道和一個VBAT 通道的信號。
本文將開ADC的IN0、IN1、IN15一共三個通道,來分別讀取ADC,由于串口2和IN2,IN3復(fù)用,故不使用IN2、IN3。配置如下:
生成工程設(shè)置
注意在生產(chǎn)工程設(shè)置中不能出現(xiàn)中文,不然會報錯。
生成代碼
配置keil
代碼
在main.c中,添加頭文件,若不添加會出現(xiàn) identifier "FILE" is undefined報錯。
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
函數(shù)聲明和串口重定向:
/* USER CODE BEGIN PTD */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END PTD */
變量定義:
/* USER CODE BEGIN 0 */
uint8_t i;
uint16_t adcBuf[3];//存放ADC
/* USER CODE END 0 */
主循環(huán):
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
i=0;
while(i<3)
{
HAL_ADC_Start(&hadc);//啟動ADC
HAL_ADC_PollForConversion(&hadc,0xffff);//表示等待轉(zhuǎn)換完成,第二個參數(shù)表示超時時間,單位ms.
//HAL_ADC_GetState(&hadc1)為換取ADC狀態(tài),HAL_ADC_STATE_REG_EOC表示轉(zhuǎn)換完成標(biāo)志位,轉(zhuǎn)換數(shù)據(jù)可用。
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc),HAL_ADC_STATE_REG_EOC))//就是判斷轉(zhuǎn)換完成標(biāo)志位是否設(shè)置,HAL_ADC_STATE_REG_EOC表示轉(zhuǎn)換完成標(biāo)志位,轉(zhuǎn)換數(shù)據(jù)可用
{
//讀取ADC轉(zhuǎn)換數(shù)據(jù),數(shù)據(jù)為12位。查看數(shù)據(jù)手冊可知,寄存器為16位存儲轉(zhuǎn)換數(shù)據(jù),數(shù)據(jù)右對齊,則轉(zhuǎn)換的數(shù)據(jù)范圍為0~2^12-1,即0~4095.
adcBuf[i]=HAL_ADC_GetValue(&hadc);
printf("
adc%d=%4.0d,電壓=%1.4f",i,adcBuf[i],adcBuf[i]*3.3f/4096);
i++;
}
}
HAL_ADC_Stop(&hadc);
HAL_Delay(500);
}
/* USER CODE END 3 */
演示效果
設(shè)定adc0口接3.3V,adc1口接GND,adc15口接1.5V,輸出如下。
審核編輯:湯梓紅
-
adc
+關(guān)注
關(guān)注
98文章
6391瀏覽量
543757 -
USART
+關(guān)注
關(guān)注
1文章
195瀏覽量
30760 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
280瀏覽量
14713
發(fā)布評論請先 登錄
相關(guān)推薦
評論