ADC模块DMA方式配置遇到的一个问题

1.  配置某一模块对应寄存器时,必须先使能对应RCC时钟,否则配置不会成功。
例如:   
下面是我调试的时候范的错误,前面两条语句本质是配置ADC的寄存器,但在之后才使能时钟,这样是不对的
正确做法应该是将RCC这条语句放前面
 /* ADC DMA request in circular mode */
 ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular); 
   
 /* Enable ADC_DMA */
 ADC_DMACmd(ADC1, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);    //应该放到前面


2.初始化过程中使能ADC及DMA的顺序会导致DMA通道错乱
*** 这个问题还没有找到完方法解决
    ADC_GetCalibrationFactor(ADC1);
    /* ADC DMA request in circular mode */
    ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);

    ADC_Cmd(ADC1, ENABLE);
     /* Wait the ADCEN falg */
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
    ADC_DMACmd(ADC1, ENABLE);

    ADC_StartOfConversion(ADC1);
    DMA_Cmd(DMA1_Channel1, ENABLE);

你可能感兴趣的:(ARM)