本文主要介绍FreeRTOS函数的使用(动态方法),基本上加了static函数就是使用静态方法由于静态方法使用得比较少因此不做介绍
队列
传递任务与任务之间的,任务与中断之间不固定长度的消息
消息队列创建函数
xQueueCreate();
xQueueCreate( uxQueueLength uxItemSize, pucQueueStorage pxQueueBuffer )
参数
uxQueueLength --- >队列中能够存储最大消息单元数目,即队列长度
uxItemSize --- >队列中消息单元的大小,以字节为单位
返回值:
成功:返回队列句柄
失败:返回NULL,也许是创建队列需要的RAM无法分配成功
消息队列创建函数
void vQueueDelete()
参数
队列的句柄
无返回值
消息队列发送函数
xQueueSend()
xQeueSendToBack()
作用
向队列句尾发送消息
参数
xQueue--->队列句柄
pvItemToQueue--->指针指向发送到队列尾部的队列消息
xTicksToWait--->队列满时等待队列空闲的最大超时时间
xTicksToWait---->0---->不等待,如果队列满并且此值为零函数将直接返回
xTicksToWait---->0到portMAX_DELAY之间的值,如果指定时间为portMAX_DELAY任务将会挂起
返回值
成功:pdTRUE
失败:errQUEUE_FULL
xQueueSendToFront()
作用向句首发送消息,参考上面的函数
向消息队列发送消息函数(原型函数)
xQueueGenericSend()
参数
QueueHandle_t xQueue--->队列句柄
const void * const pvItemToQueue--->指向要发送的数据的指针
TickType_t xTicksToWait--->等待时间
const BaseType_t xCopyPosition--->发送位置
返回值
成功:pdTRUE
失败:errQUEUE_FULL
消息队列读取消息函数
xQueueReceive
xQueuePeek
接受完成后将把接受的消息从队列中删除
参数
xQueue--->队列句柄
pvBuffer--->指向接受到要保存的数据
xTicksToWait---->队列空时的等待时间
0至portMAX_DELAY之间的值
返回值
成功:pdTRUE
失败:pdFALSE