1、选择开启的通道
2、参数设置
数据右对齐,连续转换模式开,扫描模式会在设置number of conversion后才可以设置为Enable
设置扫描的顺序rank,设置采样率
3、DMA设置
DMA模式设置成循环/正常模式,看具体需求。数据宽度设置成半字
4、中断设置
5、设置转换完成回调函数
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)。当AD转换完成后,在DMA中断中会调用此函数
6、主函数处理
adc.h
#define ADC_CHANNEL_NUM 4
typedef struct
{
uint16_t val[ADC_CHANNEL_NUM];
}ADC_DEF;
extern ADC_DEF ADC_Buf[10];
main.c
校准后,开启ADC
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Buf, sizeof(ADC_Buf)/2);
这里扫描4个通道,并将转换后的结果保存在ADC_Buf中,每个通道转换10次。全部转换完成后进入DMA中断,