當前位置:編程學習大全網 - 網站源碼 - 用FreeRTOS,使用隊列怎麽發送壹個結構體

用FreeRTOS,使用隊列怎麽發送壹個結構體

壹個使用結構體例子:

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?);?

}?

//...?任務其余代碼.?

}

  • 上一篇:vb程序源代碼
  • 下一篇:學前端哪家培訓機構好
  • copyright 2024編程學習大全網