写此文章目的:
1、记录如何用DMA获取ADC数据,及利用DMA进行uart数据传输
2、注意点:ADC使用的是软件触发,由于启用DMA功能,所以ADC只用利用 ADC_SoftwareStartConvCmd(ADC1, ENABLE)”来启动初次转换,后续自动进行,至于原因暂未搞清,待研究。
本想利用定时器触发转换的,后来看到人家的博文只要软件触发一次就好。
3、望他人指教,谢谢
void DMA_ADC_Init(void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
DMA_DeInit(DMA1_Channel1);
ADC_DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_BASE + ADC_DR_OFFSET; //外设地址
ADC_DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC1ConvertedValue; //AD转换数据存储地址
ADC_DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //DMA方向,外设到内存
ADC_DMA_InitStructure.DMA_BufferSize = ADC_DMA_BufferSize; //深度
ADC