定时器的框图中有一个TRGO信号输出,此信号可以用来触发ADC、DAC、其他定时器等。

此信号怎么产生呢?

        要使用 TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update); 函数来选择TRGO信号的事件源,这个函数给TIMx_CR2寄存器的位6到位4赋值,位6到位4是MMS[2:0],描述如下:

 

        如果MMS[2:0]值为000:当TIMx_EGR寄存器的UG位有效,就会触发TRGO输出。

        如果MMS[2:0]值为010:当产生更新事件时,就会触发TRGO输出。

 

另外:

当配置MMS[2:0]值为010:当产生更新事件时,就会触发TRGO输出。还可以配合重复计数寄存器来使用:

即重复多少次后才会产生一个更新事件。比如以前是1S产生一个更新事件,当把RCR的值配置为3时,就会变成3秒产生一个更新事件。配置方法如下:

    TIM_TimeBaseStructure.TIM_Period = PWM_PERIOD;                 //计数周期
    TIM_TimeBaseStructure.TIM_Prescaler = PWM_PRSC;                //分频系数
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2;        //设置外部时钟TIM1ETR的滤波时间
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;  //中央对齐模式1,从0计数到 TIM_Period 然后开始减到0,循环
	TIM_TimeBaseStructure.TIM_RepetitionCounter = REP_RATE;        //重复计数,就是重复溢出多少次才产生一个溢出中断(产生更新事件,用来触发ADC采样)
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐