我是靠谱客的博主 活力世界,最近开发中收集的这篇文章主要介绍FreeRTOS中的xQueueCreate,xQueueSend,xQueueReceive,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

xQueueCreate:

创建一个新的队列。为新的队列分配所需的存储内存,并返回一个队列处理。

原型:
xQueueHandle xQueueCreate( 
   unsigned portBASE_TYPE uxQueueLength, 
   unsigned portBASE_TYPE uxItemSize 
);
uxQueueLength队列中包含最大项目数量。
uxItemSize队列中每个项目所需的字节数。项目通过复制而不是引用排队,因为,所需的字节数,将复制给每个项目。队列中每个项目必须分配同样大小。
struct tagMsgQueuePara
{
	xQueueHandle ParseQueueHandle;
}RamPara;

struct tagTaskQueueMessage
{	
    int Message;
};

RamPara = xQueueCreate(1, sizeof(struct tagTaskQueueMessage));
这样就创建了一个tagTaskQueueMessage结构体的空间

 xQueueSend:

传递一个项目到队列。这个项目通过复制而不是通过引用排队。这个函数不能从中断服务程序调用。参考xQueueSendFromISR(),在ISR中交错使用。

原型:
 portBASE_TYPE xQueueSend( 
   xQueueHandle xQueue, 
   const void * pvItemToQueue, 
   portTickType xTicksToWait 
);
xQueue 处理将项目传递给队列
pvItemToQueue 指向队列中放置的项目的指针。项目的大小,由队列创建时定义,因为许多字节可以从 pvItemToQueue复制到队列的储存区域 
xTicksToWait 最大时间量(任务应该锁住,等待队列中的可用空间)应该已经满了。如果设置为0,调用将立即返回。时间使用滴答周期来定义,因此如果需要,常量portTICK_RATE_MS应该用来转换实时时间
struct tagTaskQueueMessage
{	
    int Message;
};
struct tagTaskQueueMessage message;

message.Message = 1;

xQueueSend(RamPara,
		    (void *)&message,
			(portTickType)0);
沿用了上面的创建,这样就入队了。

 xQueueRece:

从队列接收一个项目。这个项目通过复制接收,因此缓冲器必须提供足够大的空间。复制进缓冲器的字节数,在队列创建时已经定义。

这个函数一定不能在中断服务程序中使用。参考 xQueueReceiveFromISR 获得能够的选择。

原型:
portBASE_TYPE xQueueReceive( 
  xQueueHandle xQueue, 
  void *pvBuffer, 
  portTickType xTicksToWait 
);
pxQueue将要接收项目的队列句柄
pvBuffer指向将要复制接收项目的缓冲器的指针。
xTicksToWait任务中断并等待队列中可用空间的最大时间,应该是满的。如果设置为0,调用将立刻返回。时间在片区间中定义,如果需要,portTICK_RATE_MS常量用来转换为实际时间。
如果 INCLUDE_vTaskSuspend 定义为1 ,指定的中断时间( portMAX_DELAY) 将导致任务无限期中断(没有时间溢出)。
struct tagTaskQueueMessage
{	
    int Message;
};
struct tagTaskQueueMessage message1;

xQueueReceive(RamPara,
			(void *)&message1,
			0xffff);
沿用上面的,,这样就出队获取了数据。

最后

以上就是活力世界为你收集整理的FreeRTOS中的xQueueCreate,xQueueSend,xQueueReceive的全部内容,希望文章能够帮你解决FreeRTOS中的xQueueCreate,xQueueSend,xQueueReceive所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部