ARM中断函数定义

发布者:创意旅程最新更新时间:2017-11-14 来源: eefocus关键字:ARM  中断函数 手机看文章 扫描二维码
随时随地手机看文章

RM的中断函数是在startup code中定义的,在CODE区分配中断向量表时,及将中断函数定义出了


  1. ; Vector Table Mapped to Address 0 at Reset  

  2.   

  3.                 AREA    RESET, DATA, READONLY  

  4.                 EXPORT  __Vectors  

  5.   

  6. __Vectors       DCD     __initial_sp              ; Top of Stack  

  7.                 DCD     Reset_Handler             ; Reset Handler  

  8.                 DCD     NMI_Handler               ; NMI Handler  

  9.                 DCD     HardFault_Handler         ; Hard Fault Handler  

  10.                 DCD     0                         ; Reserved  

  11.                 DCD     0                         ; Reserved  

  12.                 DCD     0                         ; Reserved  

  13.                 DCD     0                         ; Reserved  

  14.                 DCD     0                         ; Reserved  

  15.                 DCD     0                         ; Reserved  

  16.                 DCD     0                         ; Reserved  

  17.                 DCD     SVC_Handler               ; SVCall Handler  

  18.                 DCD     0                         ; Reserved  

  19.                 DCD     0                         ; Reserved  

  20.                 DCD     PendSV_Handler            ; PendSV Handler  

  21.                 DCD     SysTick_Handler           ; SysTick Handler  

  22.   

  23.                 ; External Interrupts  

  24.                 DCD     GPIO0_IRQHandler          ; GPIO P0 Interrupt  

  25.                 DCD     GPIO1_IRQHandler          ; GPIO P1 Interrupt  

  26.                 DCD     GPIO2_IRQHandler          ; GPIO P2 Interrupt  

  27.                 DCD     GPIO3_IRQHandler          ; GPIO P3 Interrupt  

  28.                 DCD     GPIO4_IRQHandler          ; GPIO P4 Interrupt  

  29.                 DCD     CP_IRQHandler             ; Capture/PWM  

  30.                 DCD     ADC_IRQHandler            ; A/D Converter  

  31.                 DCD     Reserved_IRQHandler       ; Reserved  

  32.                 DCD     Reserved_IRQHandler       ; Reserved  

  33.                 DCD     Reserved_IRQHandler       ; Reserved  

  34.                 DCD     Reserved_IRQHandler       ; Reserved  

  35.                 DCD     Reserved_IRQHandler       ; Reserved  

  36.                 DCD     Reserved_IRQHandler       ; Reserved  

  37.                 DCD     Reserved_IRQHandler       ; Reserved  

  38.                 DCD     Reserved_IRQHandler       ; Reserved  

  39.                 DCD     UART0_IRQHandler          ; UART0  

  40.                 DCD     UART1_IRQHandler          ; UART1  

  41.                 DCD     UART2_IRQHandler          ; UART2  

  42.                 DCD     UART3_IRQHandler          ; UART3  

  43.                 DCD     TIMER0_IRQHandler         ; Timer0  

  44.                 DCD     TIMER1_IRQHandler         ; Timer1  

  45.                 DCD     TIMER2_IRQHandler         ; Timer2  

  46.                 DCD     TIMER3_IRQHandler         ; Timer3  

  47.                 DCD     WDT_IRQHandler            ; Watchdog timer  

  48.                 DCD     I2C0_IRQHandler           ; I2C0  

  49.                 DCD     I2C1_IRQHandler           ; I2C1  

  50.                 DCD     SSP0_IRQHandler           ; SSP0  

  51.                 DCD     SSP1_IRQHandler           ; SSP1  

  52.                 DCD     TIMER01_IRQHandler        ; Timer0 & Timer1  

  53.                 DCD     TIMER23_IRQHandler        ; Timer2 & Timer3  

  54.                 DCD     Reserved_IRQHandler       ; Reserved  

  55.                 DCD     Reserved_IRQHandler       ; Reserved  

  56.   

  57.   

  58.                 AREA    |.text|, CODE, READONLY  


 

不同芯片有各自的startup code,所以定义不同。

 

在startup code中定义的中断函数都是[weak]属性,如果编译器在别的文件中发现相同的函数名,则在链接时用别处的地址进行链接。

所以只要在工程的具体位置,按startup code中定义的名称直接完整该函数即可,不用在特别声明和与中断向量号联系起来。


  1. Default_Handler PROC  

  2.                 EXPORT  GPIO0_IRQHandler          [WEAK]  

  3.                 EXPORT  GPIO1_IRQHandler          [WEAK]  

  4.                 EXPORT  GPIO2_IRQHandler          [WEAK]  

  5.                 EXPORT  GPIO3_IRQHandler          [WEAK]  

  6.                 EXPORT  GPIO4_IRQHandler          [WEAK]  

  7.                 EXPORT  CP_IRQHandler             [WEAK]  

  8.                 EXPORT  ADC_IRQHandler            [WEAK]  

  9.                 EXPORT  SSP0RXINT_IRQHandler      [WEAK]  

  10.                 EXPORT  SSP0TXINT_IRQHandler      [WEAK]  

  11.                 EXPORT  SSP0RORINT_IRQHandler     [WEAK]  

  12.                 EXPORT  SSP0RTINT_IRQHandler      [WEAK]  

  13.                 EXPORT  SSP1RXINT_IRQHandler      [WEAK]  

  14.                 EXPORT  SSP1TXINT_IRQHandler      [WEAK]  

  15.                 EXPORT  SSP1RORINT_IRQHandler     [WEAK]  

  16.                 EXPORT  SSP1RTINT_IRQHandler      [WEAK]  

  17.                 EXPORT  UART0_IRQHandler          [WEAK]  

  18.                 EXPORT  UART1_IRQHandler          [WEAK]  

  19.                 EXPORT  UART2_IRQHandler          [WEAK]  

  20.                 EXPORT  UART3_IRQHandler          [WEAK]  

  21.                 EXPORT  TIMER0_IRQHandler         [WEAK]  

  22.                 EXPORT  TIMER1_IRQHandler         [WEAK]  

  23.                 EXPORT  TIMER2_IRQHandler         [WEAK]  

  24.                 EXPORT  TIMER3_IRQHandler         [WEAK]  

  25.                 EXPORT  WDT_IRQHandler            [WEAK]  

  26.                 EXPORT  I2C0_IRQHandler           [WEAK]  

  27.                 EXPORT  I2C1_IRQHandler           [WEAK]  

  28.                 EXPORT  SSP0_IRQHandler           [WEAK]  

  29.                 EXPORT  SSP1_IRQHandler           [WEAK]  

  30.                 EXPORT  TIMER01_IRQHandler        [WEAK]  

  31.                 EXPORT  TIMER23_IRQHandler        [WEAK]  


 

在具体的.c文件中


  1. /*---------------------------------------------------------------------------------------------------------*/  

  2. /* Interrupt Handler                                                                                       */  

  3. /*---------------------------------------------------------------------------------------------------------*/  

  4. void I2C0_IRQHandler(void)  

  5. {  

  6.   uint32_t status;  

  7.   

  8.   status = I2C0->STAT;  

  9.   

  10.   switch (status)  

  11.   {  

  12.   /* Arbitration loss */  

  13.   case 0x38:  

  14.     if (I2CHandler[0].ArbitLossCallBackFn)  

  15.       I2CHandler[0].ArbitLossCallBackFn(status);  

  16.     break;  

  17.   

  18.   /* Bus error */  

  19.   case 0x00:  

  20.     if (I2CHandler[0].BusErrCallBackFn)  

  21.       I2CHandler[0].BusErrCallBackFn(status);  

  22.     break;  

  23.   

  24.   default:  

  25.     if (I2CHandler[0].I2CCallBackFn)  

  26.       I2CHandler[0].I2CCallBackFn(status);  

  27.     break;  

  28.   }  

  29. }  


关键字:ARM  中断函数 引用地址:ARM中断函数定义

上一篇:s3c2440外部中断操作详解
下一篇:ARM笔记:外部中断

推荐阅读最新更新时间:2024-03-16 15:44

ARM架构处理器优化工业控制
运营现代化的工厂和加工车间,在技术上都非常复杂。为实现对机械设备和生产过程的精确控制,生产企业需要采用最新系列的传感器、致动器以及伺服系统。作为添加技术以获得精确控制功能优势的范例,各个联网与自动化层现已通过连接至IT网络的控制网络添加到工厂生产车间,它们可提供商业信息与策略,这些信息和策略转而推动生产决策的制定。 这种网络化的集中工业控制模式使得技术人员与工业控制工程师能够访问丰富的数据,以便对工厂运营过程进行观察、微调和优化。工厂厂长与企业高管只需浏览一下仪表盘便能全面了解整个工厂的工作效率。 在过去,处理过程都是采用手动控制,工厂的每个环节也都是独立运作的。通过访问描述工厂实际运营状态的实时数据,管理人员能够更好地了解工
[单片机]
用<font color='red'>ARM</font>架构处理器优化工业控制
ARM9学习3-调试第一个ARM汇编程序
调试第一个ARM汇编程序 1.双击KEIL uVision4图标,打开RVMDK uVision4集成开发环境。 2.通过菜单“projectnew uvision project…”,新建一个工程,选择要存放的位置和工程文件名“Test001”,点击“保存按钮”。 3.CPU选型,选择三星的S3C2410A,继续点击“OK”按钮。 4.不添加启动代码,所以选择“否” 5.点击工具栏上的“ ”New 图标,新建一个文件,键入汇编源代码。 6.点击工具栏上的“ ”Save 图标,保存该汇编源文件,命名为:Test001.s 7.在左边的“Project”目录结构中,右击“Source Group 1”,选择“
[单片机]
<font color='red'>ARM</font>9学习3-调试第一个<font color='red'>ARM</font>汇编程序
arm寄存器解析
寒假闲来无事准备将自己的走过的arm之路总结一下,今天就先从arm的寄存器说起吧,欢迎各位拍砖。 要介绍arm寄存器之前我们要先了解一下arm处理器的工作模式: Arm处理器有七种工作模式,为的是形成不同的使用级别,以防造成对系统的破坏。不同模式可以访问的寄存器不同,可以运行的指令不同。 (1)usr(10):普通应用程序运行的模式(应用程序) (2)FIQ(11):快速中断模式,以处理快速情况,高速数据传输 (3)IRQ(10010):外部中断模式,普通中断处理 (4)svc(10011):保护模式(管理模式),操作系统使用的特权模式(内核) (5)abt(10):数据访问中止模式,用于虚拟存储和存储保护 (6)und(11011
[单片机]
<font color='red'>arm</font>寄存器解析
基于ARM的剪切生产线数控系统
0 引言   随着我国制造业的飞速发展,对机加配件的加工精度和生产效率的要求越来越高,对企业生产过程的自动化程度也提出了很高的要求。棒料是各种模锻件、辊锻件、辗压件生产用的主要原料,而棒料剪断机就是为这些锻压工艺准备坯料的剪切下料设备。早期的剪切系统电气控制普遍采用交流接触器和继电器进行控制,经过长年使用,部件老化,设备故障频发。在维护中由于分立元件众多,集成度差,许多故障不能及时处理,给企业生产带来诸多不便。   由于PLC伺服控制系统具有定位精度高、响应速度快、抗干扰能力强、运行平稳等特性,采用可编程序控制器(PLC)控制系统的高精度自动剪切生产线的应用越来越广泛。但PLC还是软PLC技术,都有实时性不强的缺点,很难实现复
[单片机]
基于<font color='red'>ARM</font>的剪切生产线数控系统
ARM处理器和体系结构介绍(Cortex-A9)
ARM(Advanced RISC Machines) 概述:有三种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。 技术特征 体积小、低功耗、低成本、高性能。 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8/16位器件。 大量使用寄存器,指令执行速度更快。 大多数数据操作都在寄存器中完成。 寻址方式灵活简单,执行效率高。 指令长度固定。 嵌入式RISC微处理器 概述:RISC(Reduced Instruction Set Computer)是精简指令集计算机,RISC把着眼点放在如何使计算机的结构更加简单和如何使计算机的处理速度更加快速上。RISC选取了使用频率最高的简单指令,抛
[单片机]
<font color='red'>ARM</font>处理器和体系结构介绍(Cortex-A9)
Arm linux 系统调用分析
Arm linux 系统调用分析 概述 操作系统为在用户态运行的进程与硬件设备进行交互,提供操作系统的系统服务,提供了一组接口。在应用程序和硬件之间,内核提供的系统服务设置一个额外层具有很多优点。 首先,这使得编程更加容易,把用户从学习硬件设备的低级编程特性中解放出来。 其次,这极大地提高了系统的安全性,因为内核在试图满足某个请求之前在接口级就可以检查这种请求的正确性。 最后, 更重要的是这些接口使得程序具有可移植性,因为只要内核所提供的一组接口相同,那么在任一内核之上就可以正确地编译和执行程序。 ARM Linux系统利用SWI指令来从用户空间进入内核空间,还是先让我们了解下这个SWI指令吧。SWI指令用于产生
[单片机]
<font color='red'>Arm</font> linux 系统调用分析
ARM指令集中经常使用的存储和载入指令
ARM微处理器支持载入/存储指令用于在寄存器和存储器之间传送数据,载入指令用于将存储器中的数据传送到寄存器,存储指令则完毕相反的操作。经常使用的载入存储指令例如以下: LDR 字数据载入指令 LDRB 字节数据载入指令 LDRH 半字数据载入指令 STR 字数据存储指令 STRB 字节数据存储指令 STRH 半字数据存储指令 1、LDR指令 LDR指令的格式为: LDR{条件} 目的寄存器, 存储器地址 LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通经常使用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器
[单片机]
基于ARM LPC2292 的CAN总线和以太网间的网关设计
0 引言   CAN 总线是一种设备互连的总线型控制网络,与其它的现场总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。这些特点使得其能同时满足过程控制和制造业自动化的需求,因此被认为是最具有发展前途的现场总线之一。但是,由于其收发器驱动能力的限制,约束了CAN 总线的最远直接传输距离和总线上可以挂接的最大节点数,给系统组网带来了一定的困难。而另一方面,由于以太网的低成本、开放性、应用软硬件的支持以及强大的组网能力,目前已经是应用最广泛的局域网络技术,越来越多的工程师们开始采用CAN 总线与以太网结合的技术。针对这样一种情况,本文提出一种CAN 总线和以太网互连系统的设计方案,实现CAN 总线网和以太网的数据互连
[单片机]
基于<font color='red'>ARM</font> LPC2292 的CAN总线和以太网间的网关设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved