MDK-ARM中如何使用快速中断FIQ
问题类别:ARM软件工具 > Keil MDK | 浏览次数:6896 |
发布日期:2012/4/23 17:12:11 | 文章来源:完美体育·(中国)手机网页版科技 |
回复日期:2020/12/20 9:57:07 |
环境说明
MDK-ARM中国版3.05 及以上分析描述
MDK-ARM中如何使用快速中断FIQ?问题解答
根据ARM公司提供的资料,在使用快速中断的时候一般对时间要求比较高,这时建议客户使用汇编语言进行编写FIQ的中断处理函数,如果使用MDK的关键字__irq,则使用方法如下:
1. 中断服务程序
不同的ARM微控制器有不同的中断优先级和中断系统。参考开始使用ARM开发工具集用户指南, 中断,可了解各种中断相关概念。
2. KEIL编译器提供关键字__irq 以定义标准的(irq)和(fiq)中断函数。
例子:
__irq void IRQ_Handler (void) {
/* the interrupt code */
}
4. 对没有向量中断处理或FIQ中断函数的微控制器,需要按要求改变CPU的启动代码。
例子:
下面的C代码实现了一个空的 FIQ_Handler:
__irq void FIQ_Handler (void) {
;
}
在启动代码中,要进行如下修改以调用FIQ_Handler:
Vectors LDR PC, Reset_Addr
:
LDR PC, FIQ_Addr ; Instruction at FIQ Vector
location
:
PRESERVE8 ; tell linker: stack
;alignment is 8-byte
IMPORT FIQ_Handler ; use external FIQ_Handler
FIQ_Addr DCD FIQ_Handler ; FIQ Entry point
以上部分节选自KEIL的用户指南部分。