用FreeRTOS,使用队列怎么发送一个结构体
1个回答
展开全部
一个使用结构体例子:
struct AMessage
{
portCHAR ucMessageID;
portCHAR ucData[ 20 ];
}xMessage;
unsigned portLONG ulVar = 10UL;
void vATask( voidvoid *pvParameters )
{
xQueueHandle xQueue1, xQueue2;
struct AMessage *pxMessage;
/*创建一个队列,队列能包含10个unsigned long类型的值。*/
xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
/* 创建一个队列,队列能包含10个 Amessage结构体指针类型的值。
这样可以通过传递指针变量来包含大量数据。*/
xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
// ...
if( xQueue1 != 0 )
{
/*1个unsigned long型数据入队.如果需要等待队列空间变的有效,
会最多等待10个系统节拍周期*/
if( xQueueSend( xQueue1, ( voidvoid * ) &ulVar, ( portTickType ) 10 ) !=pdPASS )
{
/*消息入队失败*/
}
}
if( xQueue2 != 0 )
{
/* 发送一个指向结构体Amessage的对象,如果队列满也不等待 */
pxMessage = & xMessage;
xQueueSend( xQueue2, ( voidvoid * ) &pxMessage, ( portTickType ) 0 );
}
//... 任务其余代码.
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询