请教一下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条回答
zjtzlqr
2019-12-15 05:37
悠然科技 发表于 2013-1-15 12:05
你在任务里调用OSTimeDly包括OSTimeDlyHMSM,源码里面有个OSCtxSw,叫做任务级切换,在中断里包括systick滴 ...

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异常而已并没有产生pendsv中断,而且我调试的时候跑这段代码pendsv中断服务程序也没有active

一周热门 更多>