在使用stm32的通用定时器定时中断的时候,发现定时器在完成初始化配置后,定时器UIF位会立刻置位,导致在使能中断后,程序会立刻进入定时器中断。
如果设计代码时不希望定时器配置完成后,立刻进入中断,可以在定时器配置完成后,立刻清除UIF标志位(TIMx->SR &= 0xFFFE) ,再使能定时器更新中断。比如用库函数这么写:
TIM_ClearITPendingBit(TIM4, TIM_IT_Update );
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //使能TIM4的更新中断
TIM_Cmd(TIM4, ENABLE);
但又发现个特别奇怪的问题,TIM_ClearITPendingBit和TIM_ITConfig先后顺序一定不能错。如果顺序错了,也会立刻进入中断处理函数。
原文地址:http://www.cnblogs.com/yibanshouxi/p/3818550.html