小编在此感谢网上的大神,我也在此做下记录
ADC采用DMA方式读取电压,所有通道循环采集存放数组,同一通过到采集多次放入数组
假如4通道,采集6次,循环存放入数组,ADC数组总长度4*6=24;
DMA数组下标排序:bit0 ~ bit24
DMA数组存放规则:0123 0123 0123 0123 0123 0123
配置和源码如下
#define ADC_CHANNEL 4 //通道数
#define ADC_NUMBER 6 //一个通道存放个数
#define ADC_LENGTH (ADC_NUMBER * ADC_CHANNEL)
uint32_t adcbuff[ADC_LENGTH]; //adc 通道采集数组
HAL_ADCEx_Calibration_Start(&hadc1); //开启ADC校准
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)adcbuff, ADC_LENGTH); //adc启动DMA,之后直接读取数组就可以了,DMA自己转换数据
源码:https://github.com/NoSmallWhite/WL-open-projects