#include "stm32f1xx_hal.h" UART_HandleTypeDef huart1; ADC_HandleTypeDef hadc1; void SystemClock_Config(void) { // 配置系统时钟 } void MX_GPIO_Init(void) { // 初始化GPIO } void MX_ADC1_Init(void) { // 初始化ADC,设置分辨率为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,设置波特率为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转换 if (HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY) == HAL_OK) { // 等待转换完成 uint32_t adcValue = HAL_ADC_GetValue(&hadc1); // 获取ADC值 char adcStr; // 用于存储转换结果的字符串表示形式,包括终止符'\0' sprintf(adcStr, "%d", adcValue); // 将ADC值转换为字符串形式 HAL_UART_Transmit(&huart1, (uint8_t*)adcStr, strlen(adcStr), HAL_MAX_DELAY); // 通过串口发送ADC值 } } } |