EDA365电子论坛网

标题: 如何定义ARM中断函数 [打印本页]

作者: mytomorrow    时间: 2019-9-17 17:02
标题: 如何定义ARM中断函数
本帖最后由 mytomorrow 于 2019-9-17 17:11 编辑
0 k& N$ b# J7 M8 q7 F/ W6 z
4 V* H* q" N- s3 _# i3 p( q' T

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

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

* P' h  Q& j( j# q* b5 S# R

. |7 G4 F# {2 _' R7 Z2 b
+ s) b. s$ }3 ^
1 v+ I0 Q4 W; m3 h0 T5 m

3 N, {9 h8 ]: `5 F! ~
. J# a, Q7 F$ d3 P
不同芯片有各自的startup code,所以定义不同。
% `3 o: {6 c1 \& Z3 k- W
  K( [: B! D, I& @9 v1 _- j

9 ^( \6 v% C0 J) a - X; e8 Q. a9 k' i3 M
9 ~. t5 J2 i" m1 k- @( Z
4 U( {" W, @% n. m. m
在startup code中定义的中断函数都是[weak]属性,如果编译器在别的文件中发现相同的函数名,则在链接时用别处的地址进行链接。* R3 k! H& ^" O* x% \- F0 B

0 w( _5 H1 G  U% b
8 D/ @3 |  D. I, n+ w( C
所以只要在工程的具体位置,按startup code中定义的名称直接完整该函数即可,不用在特别声明和与中断向量号联系起来。+ I9 Z; o6 l1 f5 l6 U* Q
8 Q, f; c5 S$ A' \: A' o
# o( X8 q0 g4 ^9 s
( I0 ]8 T. L# z
) p2 Y7 t5 K! K' J' a( Q3 `% u$ U
; o% }* h) T: `; _% }

& @8 a- O1 E. t/ R/ X/ I
. D& i1 h8 _) H) j+ W0 t( u$ A4 Q
, J( @4 t; n4 `  J* ?  |6 D& [

  S9 u" D9 P9 H7 C3 w( c' C/ }/ q, Q0 b, i! [$ Q  k. u

( i: s! u4 S2 l/ ]" g3 N6 A
! a( N& n/ K1 c+ x' c, r
7 g( L6 K  F8 b& e' F3 O7 B: i  B

, O# y/ p* U2 O# R) F# P
1 V5 }% e7 Z. Y
* ^  H: g: I4 W) ?; w7 j

作者: wu68aq    时间: 2019-9-17 20:54
学习一下,谢谢分享。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2