请教一下ucos中什么情况下会执行PendSV_Handler

2019-12-14 12:53发布

本帖最后由 zjtzlqr 于 2013-1-14 20:57 编辑

PendSV_Handler
    CPSID   I                                                   ; Prevent interruption during context switch
    MRS     R0, PSP                                             ; PSP is process stack pointer
    CBZ     R0, PendSV_Handler_Nosave                                    ; Skip register save the first time

    SUBS    R0, R0, #0x20                                       ; Save remaining regs r4-11 on process stack
    STM     R0, {R4-R11}

    LDR     R1, =OSTCBCur                                       ; OSTCBCur->OSTCBStkPtr = SP;
    LDR     R1, [R1]
    STR     R0, [R1]

中断发生都是有条件的,什么情况下pendsv中断服务程序会执行
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
wdooy
2019-12-15 13:50
NVIC_PENDSVSET  EQU     0x10000000                              ; Value to trigger PendSV exception. ////////////////////



OSIntCtxSw
    LDR     R0, =NVIC_INT_CTRL                                  ; Trigger the PendSV exception (causes context switch)
    LDR     R1, =NVIC_PENDSVSET
    STR     R1, [R0]
    BX      LR

一周热门 更多>