一、FreeRTOS消息队列
1.1 创建消息队列
xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, // 队列消息最大个数
unsigned portBASE_TYPE uxItemSize ); // 单个消息最大字节
uxQueueLength 队列能够存储的最大单元数目,即队列深度。
uxItemSize 队列中数据单元的长度,以字节为单位。
返回值
NULL 表示没有足够的堆空间分配给队列而导致创建失败。
非 NULL 值表示队列创建成功。此返回值应当保存下来,以作为
操作此队列的句柄。
1.2 发送消息
xQueueSendToBack()用于将数据发送到队列尾;
xQueueSendToFront()用于将数据发送到队列首。
xQueueSend() 完全等同于 xQueueSendToBack()。
portBASE_TYPE xQueueSendToFront( xQueueHandle xQueue, // 队列句柄
const void * pvItemToQueue, // 数据指针
porttickType xTicksToWait ); // 阻塞时间 portBASE_TYPE xQueueSendToBack( xQueueHandle xQueue,
const void * pvItemToQueue,
portTickType xTicksToWait );
切 记 不 要 在 中 断 服 务 例 程 中 调 用 xQueueSendToFront() 或 xQueueSendToBack()。系统提供中断安全版本的xQueueSendToFrontFromISR()与xQueueSendToBackFromISR() 用于在中断服务中实现相同的功能。
原作者:早睡的叶子