|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 pulbieup 于 2019-8-28 14:27 编辑
2 q, e5 G6 N: c* T1 ?) L$ \
4 g- R4 ` Q3 J6 r) y6 t2、3分别对应关中断和开中断/ n' v7 J9 s0 @& J9 m V8 a: u
3 w" C( `. ]2 s! m) @ 关中断:MRS R0, SPSR //在软件中断的时候直接对程序状态保存寄存器SPSR操作也就是对CPSR的操作
) i2 ]! z- s. J2 c2 S+ { ORR R0, R0, #NoInt //在汇编语言中对寄存器的对应位置位用ORR,清零用BIC+ r3 ]8 ?8 ^) F! g/ B% e0 N
MSR SPSR_c, R0 //SPSR_c表示的是只改变SPSR的控制段的8位代码,其他三段_f,_s,_x中标志位在_f段,其他为保留位* P: H- m0 a/ @4 B1 S! _. I6 j9 q
* {8 d, \' [9 v | T, o! u2 T8 I 开中断:MRS R0, SPSR //在开中断中基本与上面相同,只是ORR改成BIC清零4 D8 {5 `. `, V
BIC R0, R0, #NoInt( m) D i: @% n( L' {7 `
MSR SPSR_c, R* C; S& M* e+ u4 r
! @7 ~) q8 ^: ?+ J" J" P3 g' t
由于需要实现中断嵌套,所以只有当关中断的计数器减为0的时候才能够开中断,而且每次关中断的时候该计数器都应该加1。另外,插入汇编语言时用_asm指令。
. W1 f% q, ]7 N, V: D
: Y2 d; ?( j) h/ @5 k
, T! I$ ]+ b/ E8 j+ @' M; ~% D& k$ a2 _
8 n, g! M1 o+ N) L" r
|
|