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

如何定义ARM中断函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 mytomorrow 于 2019-9-17 17:11 编辑 8 t2 \' ^. i9 S, I
( m: g/ S1 b- C

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

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

2 \5 i. G! d* D$ }
  • ; 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
    ! b( @9 G0 j; w
6 B- @8 {  e8 E/ c7 u% R
5 D4 {% S- Z3 D0 m) f2 M

* i, p, Y* }' H0 {5 Z, M5 O2 x( e
; M& n; [2 J4 S& u+ v- C5 J

" z% R' q: C  T+ L# u9 f" K5 h, W& o不同芯片有各自的startup code,所以定义不同。
6 j$ F6 A! h4 C! N+ |( C& p7 p3 g( g
3 j' ^# ?! A! v

. Z8 Y4 s2 [: a: R
  A8 Q( J9 s8 }' k$ f" P! h1 O. I. ^( Y7 O# S# Q

0 n( g, C) F; [6 W- y在startup code中定义的中断函数都是[weak]属性,如果编译器在别的文件中发现相同的函数名,则在链接时用别处的地址进行链接。* m4 |2 J9 v, p% u; N2 X, ^

( e  g6 U3 f( T$ ~; d1 B. N

8 M* r" P& ?, s所以只要在工程的具体位置,按startup code中定义的名称直接完整该函数即可,不用在特别声明和与中断向量号联系起来。
) u* m6 e5 w: }) q' t
游客,如果您要查看本帖隐藏内容请回复
4 ?1 B9 g9 _7 I7 |: k

+ ]& s, s1 d  Z9 v
0 }. G3 d2 R3 g: A
" m( r+ ?+ `" N( z8 V6 X# \" u

2 d5 N4 F" a3 r7 z" a; F% E$ z& m3 l3 b" H% p$ O1 w- N) }  P' J
  X9 n$ r' L/ [8 ~- P
8 k* K& _; G2 |! V- u7 s" Q

0 s3 W- }" h6 Q/ D, N5 e) Q2 r
! M) _% f6 |! i- E% Z2 _3 M
, x+ R- R# I2 G" h2 d$ Y. L

% ^$ M$ @. ]& t$ }* O

1 ?' E5 I5 d8 C3 n. x# m' \9 U- o" }( j% e; o0 U
) h0 w% n& G! `) g
: s0 D# G# x6 t) c/ H0 d3 N

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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