这是野火的官方例程:
ADC1配置如下:
//ADC1 初始化
- ADC_InitTypeDef ADC_InitStruct;
- ADCx_1_APBxClock_FUN( ADCx_1_CLK, ENABLE );
-
- ADC_InitStruct.ADC_Mode = ADC_Mode_RegSimult;
- ADC_InitStruct.ADC_ScanConvMode = DISABLE;
- ADC_InitStruct.ADC_ContinuousConvMode = ENABLE;
- <font color="#ff0000" size="4"> ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;</font>
- ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStruct.ADC_NbrOfChannel = NOFCHANEL;
- ADC_Init(ADCx_1, &ADC_InitStruct);
- RCC_ADCCLKConfig(RCC_PCLK2_Div8);
- ADC_RegularChannelConfig(ADCx_1, ADCx_1_CHANNEL, 1, ADC_SampleTime_55Cycles5);
复制代码
ADC2配置如下:
// ADC2 初始化
- ADCx_1_APBxClock_FUN( ADCx_2_CLK, ENABLE );
-
- ADC_InitStruct.ADC_Mode = ADC_Mode_RegSimult;
- ADC_InitStruct.ADC_ScanConvMode = DISABLE;
- ADC_InitStruct.ADC_ContinuousConvMode = ENABLE;
- <font color="#ff0000" size="4"> ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;</font>
- ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStruct.ADC_NbrOfChannel = NOFCHANEL;
- ADC_Init(ADCx_2, &ADC_InitStruct);
- RCC_ADCCLKConfig(RCC_PCLK2_Div8);
- ADC_RegularChannelConfig(ADCx_2, ADCx_2_CHANNEL, 1, ADC_SampleTime_55Cycles5);
复制代码ADC1使能函数:ADC_SoftwareStartConvCmd(ADCx_1, ENABLE);
ADC2使能函数:
ADC_ExternalTrigConvCmd(ADC2, ENABLE);
/*----------------------------------------------------------------------------------*/
本例程的前提是双ADC规则同步。
由例程可知,ADC1和ADC2的配置都一模一样,外部触发转换选择的都是关闭(代码中标红的位置),为什么在使能的时候,ADC1采用软件触发转换,而ADC2却采用外部触发转换,ADC1采用软件触发转换可以理解,而ADC2在配置的时候明明选择的是ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None, 为什么在使能ADC2的时候却用ADC_ExternalTrigConvCmd(ADC2, ENABLE)这个函数使能,不是在配置的时候明明关闭了外部触发转换,脑洞转不过来,有人能帮忙解释一下吗?
一周热门 更多>