首先依旧使用STcubeMX配置一下工程
我这里使用的是ADC1的多个通道,具体看下面配置图,比较简单,因为我使用了DMA,配置好ADC之后还需要配置一下DMA。
1,ADC配置
2,DMA配置,需要配置通道以及方向,是外设到内存还是内存到内存,以及缓存区数据宽度。
3,配置好以上后,我们还需要手动添加外设地址以及内存地址等
下面看代码:
LL_DMA_SetDataLength(DMA1,LL_DMA_CHANNEL_1,NOFCHANEL);
LL_DMA_SetPeriphAddress(DMA1,LL_DMA_CHANNEL_1,LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA));
LL_DMA_SetMemoryAddress(DMA1,LL_DMA_CHANNEL_1,(uint32_t)&ADC_ConvertedValue);
LL_DMA_EnableChannel(DMA1,LL_DMA_CHANNEL_1);
LL_ADC_Enable(ADC1);
// ADC开始校准
LL_ADC_StartCalibration(ADC1);
// 等待校准完成
while(LL_ADC_IsCalibrationOnGoing(ADC1));
//设置ADC组通过DMA定期转换数据传输
LL_ADC_REG_SetDMATransfer(ADC1,LL_ADC_REG_DMA_TRANSFER_UNLIMITED);
//LL_ADC_REG_StartConversion(ADC1); //对于F0系列的芯片需要加上这句代码
设置好以上之后,DMA会自动开始搬运,我们查看ADC_ConvertedValue数组就可以看到数据了。