STM32HAL学习笔记八-ADC
本实验是ADC,依旧是在串口通信实验(实验二)的基础上修改
1.ADC简介
ADC(analog to digital converter)即模数转换器,它可以将模拟量信号转换为数字信号,按照转换原理主要分为逐次逼近型、双积分型、电压频率转换型三种。STM32F1的ADC是12位逐次逼近型的模数转换器,它有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位存储寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阈值。ADC的时钟不要超过14M,否则将导致结果准确度下降。
2.CubeMX配置
2.1打开ADC1的通道1
2.2配置时钟
3.程序编写
3.1定义变量
uint16_t AD_Value;
float Vol_Value;
3.2循环转换与打印
HAL_ADC_Start(&hadc1); //启动ADC转换
HAL_ADC_PollForConversion(&hadc1,10); //等待转换完成,10ms表示超时时间
AD_Value = HAL_ADC_GetValue(&hadc1); //读取ADC转换数据(12位数据)
printf("ADC1_IN0 ADC value: %d\r\n",AD_Value);
Vol_Value = AD_Value*(3.3/4096); //AD值乘以分辨率即为电压值
printf("ADC1_IN0 VOL value: %.2fV\r\n",Vol_Value);