【问题标题】:CMSIS API for "taskENTER_CRITICAL()" in FreeRTOSFreeRTOS 中“taskENTER_CRITICAL()”的 CMSIS API
【发布时间】:2021-09-21 10:00:15
【问题描述】:

据我所知,在 FreeRTOS 中,taskENTER_CRITICAL()taskEXIT_CRITICAL() 这两个方法用于进入和退出临界区。 CMSIS API 中是否有这两种方法的包装器?

就像 osKernelStart() 是用于将 vTaskStartScheduler() 包装在 FreeRTOS 中的 CMSIS API。

【问题讨论】:

    标签: freertos cmsis


    【解决方案1】:

    至少在 v2 中有
    int32_t osKernelLock(void)

    我在 v1 中没有找到类似的东西。

    CMSIS-RTOS2

    【讨论】:

    • 它说“这个函数不能从中断服务程序中调用。” AFAIK,taskENTER_CRITICAL()没有这样的限制。
    • FreeRTOS 网站说:“taskENTER_CRITICAL() 和 taskEXIT_CRITICAL() 宏提供了一个基本的临界区实现,它通过简单地禁用中断来工作,无论是全局还是特定的中断优先级." 所以,在我看来,taskENTER_CRITICAL() 不仅“锁定所有任务开关”,而且还禁用了所有来自外设的中断。如果我们想阻止任务切换,似乎还有另一个宏vTaskSuspendAll
    猜你喜欢
    • 2018-08-08
    • 2019-09-22
    • 1970-01-01
    • 2016-09-07
    • 2020-04-11
    • 2018-11-27
    • 2021-10-18
    • 2018-07-24
    • 1970-01-01
    相关资源
    最近更新 更多