新闻中心

EEPW首页>嵌入式系统>设计应用> ARM7内核的中断屏蔽方法

ARM7内核的中断屏蔽方法

作者: 时间:2011-06-27 来源:网络 收藏

3.2 汇编语言程序实现
C语言程序只能实现对向量IRQ的,具有局限性,如想实现对全部就只能使用汇编语言来实现。程序如下:
f.JPG
g.JPG
在读/写CPSR时,可以指定传送的区域,指定一种或多种(字母必须为小写)格式:
◆_c为控制域字节(CPSR[7…0]);
◆_x为扩展域屏蔽字节(CPSR[15…8]);
◆_s为状态域屏蔽字节(CPSR[23…16]);
◆_f为标志域屏蔽字节(CPSR[31…24])。
在Disable()函数中,通过直接将当前程序状态寄存器的I、F置位来屏蔽I、F在响应中断后将置位中断禁止标志,中断处理结束后再清零中断禁止标志,这样可避免出现不受控制的中断嵌套,即本质上是不支持同级中断嵌套的。所以在Enable()函数中,当在处于不同的工作模式时,应采取不同的模式来分别处理。用户或系统模式下,函数直接清零I、F位,允许向量和快速中断;向量中断模式下只清零F位,允许快速中断;快速中断模式下处理较为复杂,首先要判断在进入快速中断模式之前ARM7内核的工作模式,通过读取存储程序状态寄存器来判断。若之前处于向量中断工作模式,则函数不作任何处理,直接结束;若不是处于向量中断工作模式,则只清零I位,允许向量中断。

结语
本文介绍一种ARM7内核的中断屏蔽,并给出基于该的C语言源代码和汇编语言源代码。该段代码已经在笔者参与研制的火灾报警控制器中得到成功应用,可以完全替代x86体系下DOS.H中定义的库函数enable()和disable()的功能。

本文引用地址://m.amcfsurvey.com/article/150568.htm

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭