初级会员

- 积分
- 93
- 金钱
- 93
- 注册时间
- 2013-12-6
- 在线时间
- 0 小时
|
发表于 2014-3-4 10:10:14
|
显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,是不是STM32不能像51那种不写中断服务函数,单单只用软件查询中断是否发生的方法?
比如中断服务函数
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
LED1=!LED1;
TIM_Cmd(TIM3, DISABLE);
}
}
我在主函数中用下面的代码代替,而把中断服务函数清空,
while(TIM_GetITStatus(TIM3, TIM_IT_Update) != SET); //检查TIM3更新中断发生与否
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
LED1=!LED1;
TIM_Cmd(TIM3, DISABLE);
我仿真了下,发现程序卡死在中断服务函数中。是不是STM32必须要在中断服务函数里才能清中断标志,不清,就CPU就跳不出中断? |
|