semaphore - FreeRTOS:xSemaphoreTakeFromISR 如何唤醒任何任务
问题描述
FreeRTOS 新手,并试图详细了解它。
根据这里的手册......: https ://www.freertos.org/xSemaphoreTakeFromISR.html
...调用xSemaphoreTakeFromISR可能会导致从阻塞状态唤醒某些任务。
这怎么可能 ?
某些任务如何通过首先调用xSemaphoreGive进入阻塞状态?
我知道,信号量和互斥锁是由队列实现的,并且xQueueSend有一个参数 xTicksToWait (设置为值 portMAX_DELAY 会导致此函数进入阻塞状态)。但是xSemaphoreGive的所有内部实现都将此参数 (xTicksToWait) 设置为零。
请解释一下,为什么我要检查xSemaphoreTakeFromISR中的参数pxHigherPriorityTaskWoken ,在什么情况下可以将其设置为 pdTRUE ?
解决方案
推荐阅读
- json - 无法在go中解析json文件
- oracle-sqldeveloper - SQL 中的 AVG 函数
- latex - 将引用块与 LaTeX 中的图形类似地处理?
- php - 如何连接 login.php 和数据库?
- java - ArrayList 的 toArray() 方法无法正常工作
- nanopb - 为什么当我用 max_count 对 nanopb 中的重复字段进行编码时,bytes.written 在另一方面是零(空),它不能被编码
- angular - 如何使用带有表单控件名称的“ngModel”?
- javascript - 如何使用 Vuex 创建模块并使用 mapState() 获取数据
- javascript - 我的突变不起作用!我该如何纠正?
- clojure - 如何将时间以秒为单位转换为 clojure 中的时区时间戳?