AVR 程序里想打开全局中断,为什么用sei()之后,再执行一条就又回到程序开始了,不想回去怎么解决?

如题所述

检查下是否有中断被使能却为编写中断服务函数。
或者为每个中断源编写空的服务函数

原因是AVR中断服务向量在单片机的低段,与main函数,处在相近位置,如无中断服务函数,据会跳到主函数中,这个与中用的编译器也有关系,winavr(gcc) , 就会这样。

在给你推荐一个调试方法,分块屏蔽sei() 前面的程序语句以方便定位,误使能中断的位置。

个人意见仅供参考,如若有误欢迎批评指正。追问

你的意思是说,如果我只写了sei() 却没有interrupt service routine,就一定会发生这种情况是吧?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-11
如果是icc_avr编译的话,我记得如果开启了中断后,但并未申请中断内容(就是没写中断处理函数),会导致中断触发后系统自动复位
第2个回答  2018-01-10
我也遇到这样的问题了,sei()之后程序从main函数重新执行了,问题找到了吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网