找回密码
 注册
关于网站域名变更的通知
查看: 318|回复: 1
打印 上一主题 下一主题

如何定义ARM中断函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-9-17 17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 mytomorrow 于 2019-9-17 17:11 编辑 ( X7 d8 w# Q1 j9 Y
  F0 X, A: g) w4 J6 C

自己暂时总结的,不一定对,先记录下来:

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


8 `( J) Y! f9 H/ f# t5 C
  • ; Vector Table Mapped to Address 0 at Reset
  •                 AREA    RESET, DATA, READONLY
  •                 EXPORT  __Vectors
  • __Vectors       DCD     __initial_sp              ; Top of Stack
  •                 DCD     Reset_Handler             ; Reset Handler
  •                 DCD     NMI_Handler               ; NMI Handler
  •                 DCD     HardFault_Handler         ; Hard Fault Handler
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     SVC_Handler               ; SVCall Handler
  •                 DCD     0                         ; Reserved
  •                 DCD     0                         ; Reserved
  •                 DCD     PendSV_Handler            ; PendSV Handler
  •                 DCD     SysTick_Handler           ; SysTick Handler
  •                 ; External Interrupts
  •                 DCD     GPIO0_IRQHandler          ; GPIO P0 Interrupt
  •                 DCD     GPIO1_IRQHandler          ; GPIO P1 Interrupt
  •                 DCD     GPIO2_IRQHandler          ; GPIO P2 Interrupt
  •                 DCD     GPIO3_IRQHandler          ; GPIO P3 Interrupt
  •                 DCD     GPIO4_IRQHandler          ; GPIO P4 Interrupt
  •                 DCD     CP_IRQHandler             ; Capture/PWM
  •                 DCD     ADC_IRQHandler            ; A/D Converter
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     UART0_IRQHandler          ; UART0
  •                 DCD     UART1_IRQHandler          ; UART1
  •                 DCD     UART2_IRQHandler          ; UART2
  •                 DCD     UART3_IRQHandler          ; UART3
  •                 DCD     TIMER0_IRQHandler         ; Timer0
  •                 DCD     TIMER1_IRQHandler         ; Timer1
  •                 DCD     TIMER2_IRQHandler         ; Timer2
  •                 DCD     TIMER3_IRQHandler         ; Timer3
  •                 DCD     WDT_IRQHandler            ; Watchdog timer
  •                 DCD     I2C0_IRQHandler           ; I2C0
  •                 DCD     I2C1_IRQHandler           ; I2C1
  •                 DCD     SSP0_IRQHandler           ; SSP0
  •                 DCD     SSP1_IRQHandler           ; SSP1
  •                 DCD     TIMER01_IRQHandler        ; Timer0 & Timer1
  •                 DCD     TIMER23_IRQHandler        ; Timer2 & Timer3
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 DCD     Reserved_IRQHandler       ; Reserved
  •                 AREA    |.text|, CODE, READONLY# j3 O9 ?% l- k: G' \, ~, r( W4 d
3 f" u0 r' Z. T

; Q# [0 V3 Y& j( E* {$ P% [
& K" {% K+ j4 ], s$ [, K4 p

: I, N" `7 X  z! {, W7 o5 p

6 y5 H" T( c0 {3 ?不同芯片有各自的startup code,所以定义不同。9 I* U/ o6 D* Z! d6 @

1 a' D; A! Q' D) c
- x: x) R  I0 ~! V  P, a
( x* Q1 B6 B: a7 x4 f8 x) t4 ^$ _
; L, l; ^( h" q$ t3 J  I

/ y9 ~& g) m- r/ h% Z4 v在startup code中定义的中断函数都是[weak]属性,如果编译器在别的文件中发现相同的函数名,则在链接时用别处的地址进行链接。
! L, W" K: Z# ~, D
* v' w: T8 O$ O

% F2 c/ q5 e* g, J# ~( |所以只要在工程的具体位置,按startup code中定义的名称直接完整该函数即可,不用在特别声明和与中断向量号联系起来。
  ?( u, T* d& n" V6 [2 Q# K
游客,如果您要查看本帖隐藏内容请回复
. A% j& E" D! s, D4 u9 z/ f

$ Q8 ~' O$ @1 B) [. u' v  A: b7 s$ g% Y" ~# T: N
  k* g7 ^2 R) y% A

8 l" q! c' ]& z7 `" a; e
) @" [" E) y* E

" a" U0 @6 b5 d1 {8 U0 L
+ B  g% s7 j. I6 S, r  ~

& z: {6 K& ^/ g3 A* N/ r
% `0 w7 G. B) @) |0 s
- b$ g/ _! u# f: E) i( \& l

+ v! i1 h6 X7 q! \' Z4 }7 L( R" j2 X

: b# a7 v5 f7 h* `% G' \& l7 E
& T' r; L: |5 @9 `
& m3 @2 A( \' z/ I3 K7 y4 ~$ }
  W0 F  u1 k3 w" n) B- M

该用户从未签到

2#
发表于 2019-9-17 20:54 | 只看该作者
学习一下,谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 00:14 , Processed in 0.171875 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表