STM32关于使用定时器触发ADC转换的解决办法和详细说明
2触发ADC转换的时候,发现始终调不出来,在网上找到了一些有价值的参考信息,然后在不懈的寻根究底下,终于找到问题的原因,废话少说,进入正题:
以STM32 ADC的常规通道为例(注入通道类似):
如上图,STM32 ADC的常规通道可以由以上6个信号触发任何一个,我们以使用TIM2_CH2触发ADC1,独立模式,每次仅测一条通道,则ADC的配置如下:()
void ADC_Configuration(void)
{
ADC_InitTypeDef ADC_InitStructure;
= ADC_Mode_Independent;
= DISABLE; //关闭通道扫描模式
= DISABLE; //注意不要使用持续转换模式,否则只要触发一次,//后续的转换就会永不停歇(除非CONT清0),这样第一次以后的ADC,2来触发了
= 2;//2为触发源
= ADC_DataAlign_Right;
= 1;
ADC_Init(ADC1, &ADC_InitStructure);
LKConfig(RCC_PCLK2_Div6);//配置时钟(12MHz),里面还应配置APB2=AHB时钟72MHz,
ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_1Cycles5);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1); //Start Calibration register
while(ADC_GetCalibrationStatus(ADC1)); //waiting for finishing the calibration
ADC_ExternalTrigConvCmd(ADC1, ENABLE); //设置外部触发模式使能(这个“外部“其实仅仅是相//对于ADC模块的外部,实际上还是在STM32内部)
}
这里再注意一点上面左图最顶上的那句话:当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。这跟下面的定时器2的正确配置关系很大。
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCIni
stm32定时器触发ADC 来自淘豆网www.taodocs.com转载请标明出处.