×

ARM处理器中断处理的理解

消耗积分:0 | 格式:doc | 大小:103 KB | 2011-12-09

分享资料个

    subsp,sp,#4            ;decrement sp(to store jump address) ; 先假设sp=0x1014, sp-4=0x1010

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

                            ;sp=sp-4=0x100C,r0->sp[0x100C],

    ldr  r0,= HandleIRQ  ;load the address of HandleIRQ to r0, HandleIRQ所指向的地址內裝的是IsrIRQ的入口地址

                           ;所以下面的語句实际上是加载IsrIRQ的入口地址到r0

    ldr  r0,[r0]      ;load the contents(service routine start address  即IsrIRQ的入口地址) of HandleIRQ to r0

    str  r0,[sp,#4]      ;store the contents(ISR) of HandleIRQ to stack, r0也就是IsrIRQ的入口地址to SP

                        ;r0->sp[0x100C]+4(=0x1010),but sp=0x100C不变

    ldmfd   sp!,{r0,pc}     ;POP the work register and pc(jump to ISR)  IsrIRQ的入口地址to PC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !