OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6447|回复: 1

定时器中断实验中,中断服务程序中发现LED1=!LED1指令没有执行,请问下是什么原因

[复制链接]

2

主题

3

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-12-4
在线时间
0 小时
发表于 2015-7-13 16:58:44 | 显示全部楼层 |阅读模式
5金钱
第12章的定时器中断实验,书上P134页,定时器中断服务程序如下:
void TIM3_IRQHander(void)
{
if(TIM3->SR &0X0001)   LED1=!LED1 ;          //溢出中断
  TIM3->SR =~(1<<0);                               //清除中断标志
 }
这是书上的标准程序,我改成下面的程序:
void TIM3_IRQHander(void)
{
if(TIM3->SR &0X0001)  {;}                          //溢出中断
 LED1=!LED1 ;         
  TIM3->SR =~(1<<0);                               //清除中断标志
 }
然后就发现LED1=!LED1没有被执行,程序烧进去后LED1灯没有变化,然后我发现在LED1=!LED1这条语句前面或者后面再加一条任意语句就可以被执行,我尝试了下面几种方式,LED1都可以被点亮进行闪烁:
情况一:
void TIM3_IRQHander(void)
{
if(TIM3->SR &0X0001)  {;}                          //溢出中断
delay_us(1);

 LED1=!LED1 ;         
  TIM3->SR =~(1<<0);                               //清除中断标志
 }
情况二:
void TIM3_IRQHander(void)
{
if(TIM3->SR &0X0001)  {;}                          //溢出中断
 LED1=!LED1 ;       
delay_us(1);  

  TIM3->SR =~(1<<0);                               //清除中断标志
 }
情况三:
void TIM3_IRQHander(void)
{
if(TIM3->SR &0X0001)  {;}                          //溢出中断
 printf( "OK \r\n" );

 LED1=!LED1 ;         
  TIM3->SR =~(1<<0);                               //清除中断标志
 }
情况四:
void TIM3_IRQHander(void)
{
if(TIM3->SR &0X0001)  {;}                          //溢出中断
 LED1=!LED1 ;         
 printf( "OK \r\n" );

  TIM3->SR =~(1<<0);                               //清除中断标志
 }

       对于这个情况我不理解,按照顺序结构,当if执行完毕后就应该执行下面的语句,那么将LED1=!LED1从if语句中移除,if执行空操作后再执行这条语句为什么实际上并没有 被执行,而我在这条语句上下随便加了一条语句为什么又被执行了,对于这个问题想请教下大家,谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-7-13 23:04:27 | 显示全部楼层
这个我也不太清楚,比较奇怪的一个问题。
建议中断处理的时候,做一个SR判断,然后在判断里面,做处理。
如果直接一个空中断服务函数+一些处理代码,容易出问题,具体原因未知。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 21:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表