This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

有关HWI和TASK之间通讯

按照我的理解,在HWI中向TSK发送sem或者queue,不会进行schedule的,因为这样就相当于把HWI 挂起来的了,这通常是不允许的(不允许中断嵌套)。一般的处理是,HWI退出后,RTOS立即调用schedule,然后根据优先级再决定是否切换到刚才等待sem或者queue的TSK。

但是按照上面的红线部分,似乎在调用OS_sendSem后立即启动schedule,如果这个TSK的优先级很高,会立刻run,等到它再次pending时,才又返回到HWI,HWI才结束。

不知道我理解的对否?

  • 我觉得是这样,它上面说的有问题,TSK的优先级肯定是比HWI低的,因此,HWI只会被比自己优先级更高的HWI中断嵌套,而不会被TSK抢夺。

    因此,实际情况,肯定是HWI先执行完结束,然后马上进行schedule,判别那个TSK优先级更高,优先级高的TSK获得运行的机会,有可能是原来的被HWI中断的TSK,也有可能是HWI中发送sem的那个TSK。