|
#include "stm32f1xx_hal.h" UART_HandleTypeDef huart1; ADC_HandleTypeDef hadc1; void SystemClock_Config(void) { // 配置系統(tǒng)時鐘 } void MX_GPIO_Init(void) { // 初始化GPIO } void MX_ADC1_Init(void) { // 初始化ADC,設(shè)置分辨率為12位,采樣時間為239.5個周期 hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 1; hadc1.Init.DMAContinuousRequests = DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; HAL_ADC_Init(&hadc1); } void MX_USART1_UART_Init(void) { // 初始化USART1,設(shè)置波特率為9600bps huart1.Instance = USART1; huart1.Init.BaudRate = 9600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_NONE; HAL_UART_Init(&huart1); } int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); MX_USART1_UART_Init(); while (1) { HAL_ADC_Start(&hadc1); // 啟動ADC轉(zhuǎn)換 if (HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY) == HAL_OK) { // 等待轉(zhuǎn)換完成 uint32_t adcValue = HAL_ADC_GetValue(&hadc1); // 獲取ADC值 char adcStr; // 用于存儲轉(zhuǎn)換結(jié)果的字符串表示形式,包括終止符'\0' sprintf(adcStr, "%d", adcValue); // 將ADC值轉(zhuǎn)換為字符串形式 HAL_UART_Transmit(&huart1, (uint8_t*)adcStr, strlen(adcStr), HAL_MAX_DELAY); // 通過串口發(fā)送ADC值 } } } |
|