我的设想是使能TIM1更新中断,在服务程序里变量 count 自增,在调试过程中发现了这个问题,所以来请教一下,先谢谢各位。
主函数如上所示,我的设想就是在count增加到20时失能TIM1,在隔一小段时间后再使能TIM1,这么说来count的值应该在0-20之间变化。
当服务程序里清标志位是
TIM_ClearFlag(TIM1, TIM_FLAG_Update);
或者是
TIM_ClearITPendingBit(TIM1, TIM_FLAG_Update);
时是可行的
count的值在0-20间变化
但是如果是
TIM1->SR&=~(1<<0);
count的值则是在0-0xffff中变化:我的问题就是
TIM1->SR&=~(1<<0);
与下面两个
TIM_ClearFlag(TIM1, TIM_FLAG_Update);
TIM_ClearITPendingBit(TIM1, TIM_FLAG_Update);
有什么差别
我猜想
TIM1->SR&=~(1<<0);
并没有清除中断标志位,所以程序一直在中断,所以count的值才会在0-0xffff范围内。
但是TIMx_SR的UIF位应该就是更新标志位,跟 TIM_FLAG_Update 有什么差别呢?
再次拜谢!
|