打印

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

[复制链接]
2262|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 赞一个!
5
dn_rui|  楼主 | 2013-4-12 11:22 | 只看该作者
问题已经解决,是我后边的初始化把前面的初始化覆盖了,所以中断没有打断,LPC2378的中断,优先级高的可以打断优先级低的,不需要上面所说的两种方法。

使用特权

评论回复
6
xinzha| | 2013-4-12 16:26 | 只看该作者
本帖最后由 xinzha 于 2013-4-12 16:27 编辑

你多了解下就知道这种用法有多大风险了,4楼所描述的是目前arm官方推荐的中断嵌套做法。当然如果有vic模块就一般不用中断嵌套了。

使用特权

评论回复
7
mohanwei| | 2013-4-12 17:43 | 只看该作者
建议重新梳理功能,简单化……

使用特权

评论回复
8
dn_rui|  楼主 | 2013-4-19 09:17 | 只看该作者
xinzha 发表于 2013-4-12 16:26
你多了解下就知道这种用法有多大风险了,4楼所描述的是目前arm官方推荐的中断嵌套做法。当然如果有vic模块 ...

感觉我的方法只是打断,没有嵌套,学习下4楼的方法

使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝