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);