ADC在MX中的配置:
时钟树:
代码:
#include "main.h" // 确保包含了必要的头文件 // 假设这些变量已经在其他地方定义 extern ADC_HandleTypeDef hadc4; uint32_t uhADCxConvertedData; float voltage; int main(void) { // 初始化代码(如HAL库、系统时钟、GPIO等)通常在这里 // HAL_Init(); // SystemClock_Config(); // MX_GPIO_Init(); // MX_ADC4_Init(); // 确保ADC4已经初始化 while (1) { // 尝试启动ADC转换 if (HAL_ADC_Start(&hadc4) != HAL_OK) { /* ADC转换启动错误 */ Error_Handler(); } /* 等待ADC转换完成,超时时间为10ms */ if (HAL_ADC_PollForConversion(&hadc4, 10) != HAL_OK) { /* 转换完成标志未按时设置 */ Error_Handler(); } // 获取ADC转换结果 uhADCxConvertedData = HAL_ADC_GetValue(&hadc4); // 计算电压值,假设参考电压为3.3V,ADC分辨率为12位(4096) voltage = uhADCxConvertedData * 3.3 / 4096.0; // 延时1秒 HAL_Delay(1000); // 打印信息到串口(确保已经初始化了USART) printf("Hello! STM32WBA55CG TEST! Author by keyboard007!\r\n"); printf("uhADCxConvertedData = %5d\r\n", uhADCxConvertedData); printf("voltage = %1.3fv\r\n", voltage); } } // 错误处理函数 void Error_Handler(void) { // 用户可以在这里添加错误处理代码 while (1) { // 例如,可以闪烁LED或执行其他错误指示操作 } }
KEIL界面ADC初始代码: