【FreeRTOS】使用指南3:队列管理

本文详细介绍了在FreeRTOS中如何在中断服务例程中使用特定API函数,包括在中断中操作二值信号量和计数信号量,延迟中断策略,以及利用队列进行数据传递。还讨论了FreeRTOS移植中的中断嵌套模型。
摘要由CSDN通过智能技术生成

【FreeRTOS】使用指南3:队列管理

本章期望能清晰地告诉读者以下事情:
哪些 FreeRTOS 的 API 函数可以在中断服务例程中使用。
延迟中断方案是处何实现的。
如何创建和使用二值信号量以及计数信号量。
二值信号量和计数信号量之间的区别。
如何利用队利在中断服务例程中把数据传入传出。
一些 FreeRTOS 移植中采用的中断嵌套模型。

1.哪些 FreeRTOS 的 API 函数可以在中断服务例程中使用。

只有以”FromISR”或”FROM_ISR”结束的 API 函数或宏才可以在中断服务例程中使用

2.延迟中断方案是处何实现的。

采用二值信号量同步
二值信号量可以在某个特殊的中断发生时,让任务解除阻塞,相当于让任务与中断
同步。这样就可以让中断事件处理量大的工作在同步任务中完成,中断服务例程(ISR)
中只是快速处理少部份工作。如此,中断处理可以说是被”推迟(deferred)”到一个”处理
(handler)”任务。

3.如何创建和使用二值信号量以及计数信号量。

vSemaphoreCreateBinary() //*创建二值信号量
xSemaphoreCreateCounting() //*创建记数信号量
xSemaphoreTake() //*获取(拿走)信号量
xSemaphoreGive()//*给出信号量
xSemaphoreGiveFromISR()//*中断中给出信号量
在这里插入图片描述

4.二值信号量和计数信号量之间的区别。

二值信号量只有0和1两种状态,最多只可以锁存一个中断事件,可以把二值信号量看作是只有一个数据单元的队列
计数信号量可以看作是深度大于 1 的队列

5.如何利用队利在中断服务例程中把数据传入传出。

使用中断安全版本的队列API
xQueueSendToFrontFromISR(),xQueueSendToBackFromISR()与 xQueueReceiveFromISR()
分别是 xQueueSendToFront(),xQueueSendToBack()与 xQueueReceive()的中断安全
版本,专门用于中断服务例程中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.一些 FreeRTOS 移植中采用的中断嵌套模型。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值