米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

MDK-ARM中如何使用快速中断FIQ

问题类别: > 浏览次数:3578
发布日期: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的用户指南部分。