📍 字数:1000 ⏱️ 阅读时长:6分钟
这次课程的内容为STM32F407单片机的ADC采样,同样也是基于HAL库,直接用 STM32CubeMX 生成的代码,课程仅仅做简单的ADC采样。
1. CubeMX配置
打开CubeMX的时候,参考之前的实验,都选择打开SYS中的serial wire烧录模式,并且在RCC中的HSE选择外部晶振。
ADC通道配置关键步骤
硬件连接验证
✅ 根据原理图确认:
ADC1_IN0通道对应PA0引脚
开发板已将PA0连接至可调电位器
CubeMX具体操作:
引脚配置
左侧IO列表找到PA0
下拉菜单选择ADC1_IN0
GPIO模式设为Analog(无上下拉)
ADC参数设置
在GPIO中,需要将PA0选择为模拟输入模式,也就是Analog mode的选项,然后不需要选择上拉或者下拉电阻。
同时也需要打开STM32单片机中的串口引脚,串口引脚的配置参考前面的文章。
2. ADC采样步骤
2.1 基础配置环节
🔧 硬件初始化
通过CubeMX自动生成的MX_ADC1_Init()函数已完成关键配置:
12位分辨率(最大量化值4095)
3.3V参考电压(VDDA接入电压)
通道参数(如采样时间、序列等)
💡 小提示:在CubeMX界面右击ADC引脚可快速配置通道参数。
2.2 ADC采样四步走
启动转换
调用HAL_ADC_Start(&hadc1)→ 此时ADC开始对指定通道进行信号采集
等待转换完成
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
使用HAL_MAX_DELAY实现阻塞式等待
实际项目中建议改用中断/DMA提高效率
读取原始值
value = HAL_ADC_GetValue(&hadc1);
因此能获得12位精度的数字量(0~4095)
电压换算
float voltage = value * (3.3 / 4095.0f);
公式解析:
4095对应12位ADC满量程值(2¹²-1)
3.3V为STM32系列常用参考电压
采样注意事项
对关键信号可多次采样取均值,类似滤波;
确保ADC引脚已正确配置为模拟输入模式。