打印
[AVR单片机]

ATMGE128A在IAR中嵌套中断的使用

[复制链接]
4910|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yushiqian2012|  楼主 | 2013-3-31 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ATM, ge, IAR, vr, AVR
本帖最后由 yushiqian2012 于 2013-4-1 13:42 编辑

话不多少,直接正题:
         话说我一直使用STM32,然后就轻易地想当然的认为AVR也是支持嵌套中断的,然后悲剧就产生了,我用定时器中断里面发送指令,然后想用外部中断中断掉它,然后再用SPI中断中断掉外部中断,处理标志位,然后再依次回归,最后定时器中断中判断标志位while(!标志位);
结果就死机了,彻底的死机。搞了一下午,很是郁闷。然后就开始怀疑他是不是不支持嵌套中断,结果还真是。
        AVR的中断级别是死的,不像STM32,可以指定中断优先级,同时AVR中断是采用优先响应,但是进入中断后,硬件就直接关闭全局中断了。离开中断函数以后,硬件再重新打开全局中断。读到这里,大家应该明白了吧,这么来说,其实只要在中断函数里面重新打开全局中断,那么AVR也可以像STM32一样指定优先级了,如在中断函数里面屏蔽掉不想让响应的中断,打开想让响应的中断,就可以灵活的制定响应流程。我是用的是IAR编译器,所以流程就可以这么来做:

进入定时器中断以后:

1:屏蔽掉自身中断,防止嵌套自身中断
2:屏蔽掉其他不想让其相应的中断 ,打开让响应的中断
3:打开全局中断(IAR里面可以直接调用__enable_interrupt(); )

搞定!
评分
参与人数 1威望 +6 收起 理由
qin552011373 + 6 赞一个!

相关帖子

沙发
qin552011373| | 2013-4-1 22:41 | 只看该作者
谢谢楼主分享经验

使用特权

评论回复
板凳
怎么会变懒| | 2013-4-11 14:08 | 只看该作者
谢谢楼主

使用特权

评论回复
地板
bill_shi68| | 2013-4-13 01:44 | 只看该作者
AVR的中断级别是死的,不像STM32,可以指定中断优先级,同时AVR中断是采用优先响应,但是进入中断后,硬件就直接关闭全局中断了。离开中断函数以后,硬件再重新打开全局中断。

thanks!!!

使用特权

评论回复
5
飘飞的云123| | 2013-4-13 09:38 | 只看该作者
楼主加个QQ,想咨询AVR单片机一些问题。跪求指导!入门级新生报道!QQ:1042153286
谢了

使用特权

评论回复
6
qin552011373| | 2013-4-14 11:25 | 只看该作者
bill_shi68 发表于 2013-4-13 01:44
AVR的中断级别是死的,不像STM32,可以指定中断优先级,同时AVR中断是采用优先响应,但是进入中断后,硬件 ...

是茅塞顿开?

使用特权

评论回复
7
bill_shi68| | 2013-4-14 21:19 | 只看该作者
qin552011373 发表于 2013-4-14 11:25
是茅塞顿开?

先前看数据手册已经知道,在这里巩固了!

使用特权

评论回复
8
qin552011373| | 2013-4-15 14:41 | 只看该作者
bill_shi68 发表于 2013-4-14 21:19
先前看数据手册已经知道,在这里巩固了!

不错  多来啊

使用特权

评论回复
9
cos12a| | 2013-9-6 00:44 | 只看该作者
这对新手编写程序比较有利,默认的情况下防止中断嵌套.中断嵌套,会造成程序更加复杂,难以追踪运行.也提醒老鸟,注意可能存在的嵌套.

使用特权

评论回复
10
ygl968| | 2013-9-6 09:25 | 只看该作者
参考

使用特权

评论回复
11
johnrita| | 2016-6-3 10:28 | 只看该作者
我的案例是,AVR外部低电平触发,进去后就打开全局总中断,然后程序有问题,数据不正常。怀疑是不是开中断后,自身嵌套了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不需要别人来证明自己,自己的态度更重要

45

主题

354

帖子

0

粉丝