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初始代码:

我要赚赏金
