$HandlerLabel HANDLER $HandleLabel

 MACRO

$HandlerLabel HANDLER $HandleLabel

$HandlerLabel

       sub sp,sp,#4 ;decrement sp(to store jump address)

       stmfd      sp!,{r0} ;PUSH the work register to stack(lr does not push because it return to original address)

       ldr     r0,=$HandleLabel;load the address of HandleXXX to r0

       ldr     r0,[r0]      ;load the contents(service routine start address) of HandleXXX

       str     r0,[sp,#4]      ;store the contents(ISR) of HandleXXX to stack

       ldmfd   sp!,{r0,pc}     ;POP the work register and pc(jump to ISR)

       MEND

$HandlerLabel 和 $HandleLabel是两个参数,第一个参数和第二个参数是不一样的,中间少了个r,而第一个参数在本宏中是一个标号,而第二个函数是一个入口地址。


拿HandlerSWI HANDLER HandleSWI说明:把它用宏给替换下来以后是: 
$HandlerSWI 
       sub sp,sp,#4 ;                      decrement sp(to store jump address)  
       stmfd sp!,{r0} ;                    PUSH the work register to stack(lr does not push because it

                                                    return to original address) 
       ldr r0,=$HandleSWI ;          load the address of HandleXXX to r0 
       ldr r0,[r0] ;                             load the contents(service routine start address) of HandleXXX 
       str r0,[sp,#4] ;                       store the contents(ISR) of HandleXXX to stack 
       ldmfd sp!,{r0,pc} ;                POP the work register and pc(jump to ISR)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值