在定时器中断中,我的中断处理函数如下:
=================================
void TIM3_IRQHandler(void){
/*
中断处理函数:
*/
/*思考:为何加了这条语句才行?不加不行?*/
// if(TIM3->SR&0X0001){
PFout(8) = !PFout(8);
// }
/*
在中断里边最后记得清中断标志:
*/
TIM3->SR &= ~(1 << 0);
}
====================================
在上述中断函数中,若没有加if(TIM3->SR&0X0001)这条语句,
那么蜂鸣器始终不会响,若加了if(TIM3->SR&0X0001)这条语句,
那么蜂鸣器才会如程序中所示,正常工作;理论上,不加这条if语句,
蜂鸣器也会隔一段时间响一次的,但看到的 事实是蜂鸣器根本不会响;
各位,有遇到过这种情况么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
今天搞了我大半个中午,哈哈,之后加上这条语句,就行得通了,这个程序理论上不加这条if语句也是可以的,
难道这是STM32的一个Bug么?
sr&0x0001应该可以清除标志位
我换成延迟10ms也行,应该是硬件上的问题
一周热门 更多>