打印
[ZLG-ARM]

LPC213X的IRQ使能和禁止是否可以这么干?

[复制链接]
1534|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wxy8030|  楼主 | 2008-4-28 16:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//看ZLG的使能禁止IRQ程序是用汇编写的,实在怕看,忍不住想换个方法,一想VICIntEnable不是也可以控制IRQ的吗,它一为0不就等于把所有的IRQ都关了吗?恢复时重新把需要的中断打开就是了,这样用C实现IRQ开关不是比汇编更明白吗.........

#define DisableIrq VICIntEnableCopy=VICIntEnable; VICIntEnable=0;
#define EnableIrq VICIntEnable=VICIntEnableCopy; //VICIntEnableCopy为全局变量

程序中使用时:
fun()
{
  DisableIrq
              //处理程序
  EnableIrq
}

//当然如果程序中IRQ使能的中断总是固定的话就不需要定义VICIntEnableCopy

//但因为没有仔细研究汇编和ARM的中断机制,不知道这么干是否存在隐患,还请ZLGARM指点.........

相关帖子

沙发
dld2| | 2008-4-28 16:54 | 只看该作者

怕看汇编所以不用--奇怪的理由

C的库函数很多也是汇编写的。也不用吗?

使用特权

评论回复
板凳
Wxy8030|  楼主 | 2008-4-28 16:58 | 只看该作者

能用C实现的为什么还要去找汇编呢?

汇编哪有C好看,如果有好看的,为什么还要去研究难看的呢?

而且ZLG实现使能/禁止IRQ还需要调用软件中断,掉用软件中断就要修改启动文件,我觉得麻烦;如果我的系统中只用了IRQ,这么用如果合法,为什么不呢?

使用特权

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

本版积分规则

144

主题

2092

帖子

2

粉丝