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

如何定义ARM中断函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 mytomorrow 于 2019-9-17 17:11 编辑 . D; f1 j6 P( I* Z  e4 C  v" Q

$ I3 G5 ^3 `, |& r3 W9 s( @

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

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

6 S& _3 K/ W; g0 C0 F
  • ; 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- _4 {! X  a7 @$ X

! b  A# p; z+ v: u3 M# Y
) @5 D9 c2 `  ]& t) u

, }& ]- z: c: h0 o1 r! |
% l6 _7 [  R8 S( k! f+ T/ x! O

5 `( b, @) q4 e0 t& i9 _! `不同芯片有各自的startup code,所以定义不同。- Q5 X: H3 i& s% i- X) ~
* `4 Q0 ^1 ]2 b# H, e) ?

1 Q( z2 V* a) |  p5 L+ o5 [ - @; |- H+ G5 N, h: M
  P* j' s& O2 Y1 w' t

! X1 M0 e8 z, @9 K在startup code中定义的中断函数都是[weak]属性,如果编译器在别的文件中发现相同的函数名,则在链接时用别处的地址进行链接。& z* x/ ^4 H1 n/ o: ]7 b

; F) g1 s: W$ _' P) E' [  B
- C" t! V7 x3 _# K8 \
所以只要在工程的具体位置,按startup code中定义的名称直接完整该函数即可,不用在特别声明和与中断向量号联系起来。
4 i- F# f  J; a, l. C
游客,如果您要查看本帖隐藏内容请回复

: J& P+ ]6 p- O8 I' c
8 W; X6 ]" ?3 |( t% Q! U4 ]- z3 V# u: z3 \8 r

! i! Q3 ?; J4 c

4 v! Q" U0 ^+ P2 N5 Y0 v
+ E- i2 T) k9 m, Q
2 W1 F: w/ |( p1 f' G2 L1 n

7 J+ A5 L7 y, }' S

0 v# t6 y$ \% x1 [" N! P
9 F4 @" F8 Q2 y4 e& V

% w: K2 f; L# P; s) o2 ?. [$ _, k5 H& T
% a- h& G  z2 u8 Q* T  a/ p

2 c& ^! u1 f2 u: \  e. j% t  ^
" e+ ~0 P7 k$ K7 I7 H+ z

9 Y) Y. ?$ B: h/ {0 `0 }, Q- x; j

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-23 20:35 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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