[STM8] 搞STM8遇到问题了

[复制链接]
2180|7
 楼主| 拿起书本 发表于 2013-9-7 21:56 | 显示全部楼层 |阅读模式
最近在搞stm8,发现stm8开关全局中断和其他片子不太一样,他是靠CC寄存器的I1:0这两位来控制的,上电时这两位都为高,实际是stm8初始化的时候关闭了全局中断,等外设都设置好了以后,用RIM()开全局中断,片子开始响应中断了。
问题来了,现在有3段软中断优先级不同的中断历程:IT0、IT1、IT2,软中断级别分别为1、2、3,IT2最高,如果系统已经响应了IT1中断,且在执行中IT0挂起,这时因为要处理临界区数据所以SIM(),处理完后RIM(),请问这时是执行完IT1后去响应IT0,还是发生IT0嵌套IT1的优先级翻转事件?
huangfeng33 发表于 2013-9-7 22:33 | 显示全部楼层
个人觉得是应该马上会响应IT0,因为STM8的中断只要满足两个条件就能够得到响应。
 楼主| 拿起书本 发表于 2013-9-8 15:12 | 显示全部楼层
是不是可以这样理解:系统响应某个级别中断的同时,会将他的中断等级赋值给CC寄存器的I1:0,比如主程序级别为0,I1:0为1:0;当一个二级中断响应后,I1:0为0:0,不当在这个二级中断里使用RIM()后,I1:0又被赋值成1:0,程序级别降至0级,如果这时有等待响应的一级中断,应该马上去响应1级中断?是这样的吗?
yuanquanquan 发表于 2013-9-8 17:57 | 显示全部楼层
略深奥  顶一个
xxiao6130 发表于 2013-9-9 09:01 | 显示全部楼层
这个比较难,慢慢来
食肉狼 发表于 2013-9-9 10:47 | 显示全部楼层
这时因为要处理临界区数据所以SIM(),处理完后RIM(),
   蛋疼,你这是代表开关全局中断?
膜拜一下,太深奥了
feilusia 发表于 2013-9-9 15:03 | 显示全部楼层
不知道你的RIM()是什么意思。STM8的中断优先级,默认下MAIN函数时优先级0,还有几个不可屏蔽的优先级最高,其余的优先级都为3.优先级高的可以嵌套优先级低的,当嵌套中的优先级高的运行完了,再退回来运行优先级次高的,以此类推
jxmzzr 发表于 2013-9-9 15:33 | 显示全部楼层
1.需要响应的中断被使能且中断标志位没有清除,可以理解成中断等待响应的状态;
2.需要响应的中断优先级大于程序当前优先级,也就是中断的软优先级比当前CC寄存器I1:0的级别高。当然,3个不可屏蔽的中断源除
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部