经常看到系统睡眠之前会关闭中断,那关闭中断后怎么还能被中断唤醒

2019-07-15 15:22发布

经常看到系统睡眠之前会关闭中断,那关闭中断后怎么还能被中断唤醒。

比如下面代码
{
    uint8 interruptState;

    interruptState = CyEnterCriticalSection();

    /* CM0 enters Sleep mode upon execution of WFI */
    CY_PM_CM0_SCR_REG &= (uint32) (~CY_PM_CM0_SCR_SLEEPDEEP);

    /* Sleep and wait for interrupt */
    CY_PM_WFI;

    CyExitCriticalSection(interruptState);

}

CyEnterCriticalSection:
    MRS r0, PRIMASK         ; Save and return interrupt state
    CPSID I                 ; Disable interrupts
    BX lr



在关闭中断后,怎么中断还能使用呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
notgood
1楼-- · 2019-07-15 16:09
这个不是关闭中断,是进入临界状态,进入临界状态不相应级别较低的中断。睡眠唤醒的终端还是开着的。要不就如你说的,就唤不醒了。
liujinyi016
2楼-- · 2019-07-15 17:44
 精彩回答 2  元偷偷看……

一周热门 更多>