stm32的定时器,如果使能了更新中断的话,一打开便会进入更新中断,有人要用定时中断来计数或者做其它的处理,这多一次的中断很是让人烦恼,通过以下方法便可完美解决:
在定时器初始化的最后阶段采用如下的操作顺序:
1.产生一次软件更新时间;
2. 打开定时器;
3. 清除更新中断;
4. 使能定时器更新中断。
以摄像头实验为例,发现打开串口的时候输出的第一个帧率为0,后面的才是正常的。复位后还是这样。原因是定时器一打开就进入中断了,所以产生了第一个没必要(错误)的数据。最后的使能定时器和更新中断改成如下设置,便可完美解决:
[mw_shl_code=c,true]TIM_GenerateEvent(TIM6,TIM_EventSource_Update); // 产生软件更新事件,立即更新数据
TIM_Cmd(TIM6, ENABLE); // 使能TIM6. 先开定时器,再开中断
TIM_ClearFlag(TIM6,TIM_FLAG_Update); //清除标志位。定时器一打开便产生更新事件,若不清除,将会进入中断
TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); //打开TIM6更新中断 [/mw_shl_code]
|