LPC2378的外设中断嵌套问题(求指教)

[复制链接]
3198|7
 楼主| dn_rui 发表于 2013-4-2 18:33 | 显示全部楼层 |阅读模式
网上查阅关于中断嵌套资料,说ARM7的裸机中断和51不一样,51只需要设置优先级后会自动嵌套中断,但是我用LPC2378涉及到中断嵌套的问题时,设置中断优先级后,程序运行过程中,高优先级中断不会打断低优先级中断。

看网上说有两种决绝办法:

1、不用__irq关键字,用__Handler关键字。

但是,我直接把__Handler替代__irq后,(__irq之前自动会变为粗黑体,跟void一样,而__Handler不变),程序编译不通过,不知道关键字该怎么用?

2、用__fiq和__irq两种中断,__fiq优先级高于__irq优先级,__fiq可以打断__irq。

使用__fiq关键字后,程序编译也不通过,不知道是什么问题?



不知道哪位对ARM7的裸机嵌套中断有深入研究,忘指教!
xinzha 发表于 2013-4-2 19:22 | 显示全部楼层
arm7没有实现fiq。需要自己手动在中断服务中开启中断,但是会有bug,arm的中断嵌套很复杂,你可以在网上找找安全的实现。
jlass 发表于 2013-4-3 09:20 | 显示全部楼层
编译不通过说明根本就不支持,不要去试了

中断嵌套这么复杂的功能最好不要使用

maztower 发表于 2013-4-3 10:57 | 显示全部楼层
参考周立功的中断嵌套
有种方法是IRQ中断产生后,系统自动进入IRQ模式,根据中断号找到中断服务程序后,切换至系统模式运行,这样就能响应嵌套的中断了
这部分是用汇编写的,代码不多

评分

参与人数 1威望 +1 收起 理由
dn_rui + 1 赞一个!

查看全部评分

 楼主| dn_rui 发表于 2013-4-12 11:22 | 显示全部楼层
问题已经解决,是我后边的初始化把前面的初始化覆盖了,所以中断没有打断,LPC2378的中断,优先级高的可以打断优先级低的,不需要上面所说的两种方法。
xinzha 发表于 2013-4-12 16:26 | 显示全部楼层
本帖最后由 xinzha 于 2013-4-12 16:27 编辑

你多了解下就知道这种用法有多大风险了,4楼所描述的是目前arm官方推荐的中断嵌套做法。当然如果有vic模块就一般不用中断嵌套了。
mohanwei 发表于 2013-4-12 17:43 | 显示全部楼层
建议重新梳理功能,简单化……
 楼主| dn_rui 发表于 2013-4-19 09:17 | 显示全部楼层
xinzha 发表于 2013-4-12 16:26
你多了解下就知道这种用法有多大风险了,4楼所描述的是目前arm官方推荐的中断嵌套做法。当然如果有vic模块 ...

感觉我的方法只是打断,没有嵌套,学习下4楼的方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

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