我正在使用FreeRTOS进行我的项目,并阅读文档,有些内容我无法理解。我知道当时钟中断被触发时会发生上下文切换,因此调度程序执行其工作并解除等待事件的任务并选择处于就绪状态的更高优先级任务。但是当任务在时钟中断之前阻塞时会发生什么?文档似乎暗示立即发生上下文切换(例如,两个具有不同优先级的任务分别调用vTaskDelay()以释放CPU时间片)。这是如何发生的?我搜索了但找不到任何答案。
编辑:在我的FreeRTOS端口(SAMD21 Cortex-M0+)中,使用portYIELD()宏,它只是请求SVCall异常,那么这是用于执行上下文切换的机制吗(除了调度程序运行时钟中断之外)?
编辑:在我的FreeRTOS端口(SAMD21 Cortex-M0+)中,使用portYIELD()宏,它只是请求SVCall异常,那么这是用于执行上下文切换的机制吗(除了调度程序运行时钟中断之外)?