c - FreeRTOS 中的抢占

我开始使用 FreeRTOS,我想要一个中断来抢占任何即将运行的任务并运行我需要关键运行的任务。

有没有办法在 FreeRTOS 中执行此操作? (这是通过任务优先级实现的吗?)

最佳答案

不!以上两个答案都是危险的。

不要在 ISR 中使用 taskENTER_CRITICAL() 或 taskEXIT_CRITICAL() - 在 ISR 中需要临界区是不常见的,但如果需要,则使用 taskENTER_CRITICAL_FROM_ISR()/taskEXIT_CRITICAL_FROM_ISR() . (可能 AVR32 端口是该规则的异常(exception)?)

不要使用 xTaskResumeFromISR() 将任务与中断同步。已经发布到该功能的文档的链接甚至说了这一点。

如果我对您的问题的理解是正确的,您希望能够中断解除阻塞任务,然后如果该任务是能够运行的最高优先级任务,则让中断直接返回解除阻塞的任务。如果我的理解是正确的,那么在下一页上有一个如何有效地做到这一点的例子:http://www.freertos.org/RTOS_Task_Notification_As_Counting_Semaphore.html

https://stackoverflow.com/questions/39940487/

相关文章:

sql-server - TSQL 触发器而不是插入

Groovy - 无法在注释中使用静态最终字符串

scala - 隐式是私有(private)的吗?

android-instrumentation - AndroidJUnitRunner + Act

python - Flask 应用程序搜索栏

python - 检查 Python 中两个字符串中的常用字母是否位于同一位置?

erlang - 有什么方法可以浏览 erlang 术语存储 (ETS)

angular - typescript 错误 TS1005 : '=' expected

java - 当 PoolingHttpClientConnectionManager 中的 Max

amazon-s3 - Haproxy - 将请求转发到 S3 托管站点