OpenEdv-开源电子网

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

请教关于中断函数问题

[复制链接]

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-4-24
在线时间
0 小时
发表于 2015-4-30 10:55:28 | 显示全部楼层 |阅读模式
5金钱
本人初学STM32,感觉SMT32与51差别较大,有很多不明白的地方,请大家不吝指教,谢谢。
//这是可以达到要求的定时器3中断服务程序  
void TIM3_IRQHandler(void)
{          
    if(TIM3->SR&0X0001)//溢出中断
    {
        LED1=!LED1;              
    }   
    TIM3->SR&=~(1<<0);//清除中断标志位    
}
//我将判断中断标志位删除掉LED1就不能正常周期性翻转
void TIM3_IRQHandler(void)
{          
   LED1=!LED1;     

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

//但如果我将在中断里设置时标,然后在主函数里判断时标就可以正常翻转
void TIM3_IRQHandler(void)
{          
     Run_Time++;     

    TIM3->SR&=~(1<<0);//清除中断标志位    
}
主函数里代码:
void main(void)
{
  ''''
  while(1)
  {
        if(Run_Time>2)
       {
             LED1=!LED1; 
            Run_Time=0;
       }
  }
}

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

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-4-24
在线时间
0 小时
 楼主| 发表于 2015-4-30 11:56:45 | 显示全部楼层
我不明白既然已经运行中断函数了,说明中断已经触发,为什么还要判断中断标志位?所以才将判断标志位的语句删除掉测试一下,结果才发现这样的结果
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1815
金钱
1815
注册时间
2011-10-9
在线时间
230 小时
发表于 2015-4-30 13:52:54 | 显示全部楼层
stm32中断 包括了各种中断形式   进入了中断函数 并不一定代表是 溢出中断。    所以需要判断一下 。  中断标记如果不清楚 估计不会引起下一次中断 因为代表上次中断你还没处理
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-4-24
在线时间
0 小时
 楼主| 发表于 2015-4-30 14:01:42 | 显示全部楼层
我这个程序只有定时中断,别的程序引起的中断不会进入我这个定时中断函数里,而且我的中断标志已经清除了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 02:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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