规则组
由于该组的数据寄存器一次只能存一次值
若使用多个adc则需要配合DMA(数据转运帮手)使用(DMA数据搬移未搞清楚)
adc 的开启方式(未搞清楚)
硬件
软件
adc 的四种扫描模式
单次/连续:
决定是否开启一次,然后一直转换
扫描或非扫描
决定是否实现多个通道的依次转换
adc检测外围硬件电路电压
ADC单通道配置
ADC配置过程
- 使能GPIO时钟和ADC时钟,设置引脚为模拟输入
- 设置ADC的分频因子
- 初始化ADC参数,包括ADC工作模式,规则序列等
- 使能ADC并校准
ADC_ResetCalibration(ADC1); //固定流程,内部有电路会自动执行校准
while (ADC_GetResetCalibrationStatus(ADC1) == SET);//复位校准是否完成
ADC_StartCalibration(ADC1); //开始校准
while (ADC_GetCalibrationStatus(ADC1) == SET);//校准是否完成
- 触发AD转换,读取AD转换值
注意:在使用adc的时候gpio模式需要选择 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
rank代表通道的优先级,sampletime决定采样的精确度与耗费的时间
实际问题中,数据抖动严重,可以采用均值滤波的方法,即,去多个值求平均,作为最后的输出值,减小抖动