FreeRtos osMessagePut osMessageGet 函数
任務(wù):使用stm32cube 工程的message quene management 部分api
1、使用stm32cubemx生成相應(yīng)的工程
2、使能消息隊列相關(guān)的函數(shù)
? ? ? #define osFeature_MessageQ???1
3、定義消息隊列的名字
osMessageQDef(MsgBox, 1, int); //創(chuàng)建一個長度為1,單位為int的消息隊列
osMessageQId ?MsgBox; ? ? ? ? ? ? ? //消息隊列的ID ?
4、創(chuàng)建隊列
? ? ? ?MsgBox = osMessageCreate(osMessageQ(MsgBox), NULL);
? ? ? //穿件消息隊列
5、向隊列發(fā)送消息
? ? ? osMessagePut(MsgBox, 1, osWaitForever);
? ? ? 注:1、這個函數(shù)實現(xiàn)向消息隊列傳送一個int數(shù)據(jù)1、并且進(jìn)程一直阻塞知道
7、從隊列接收消息
? ? osEvent ?evt;
? ??evt = osMessageGet(MsgBox, osWaitForever);
? ??osEvent ?數(shù)據(jù)傳輸過程中傳輸?shù)臄?shù)據(jù) ,結(jié)構(gòu)體定義如下
? ?typedef struct ?{
? ? ? ?osStatus ? ? ? ? ? ? ? ? status; ? ?//消息類型
? ? ?union ?{
? ? ? ? uint32_t ? ? ? ? ? ? ? ? ? ?v; ? ? //消息中為值
? ? ? ? void ? ? ? ? ? ? ? ? ? ? ? *p; ? ? //消息中為指針
? ? ? ?int32_t ? ? ? ? ? ? ? signals; ? ??
? ? ? } value; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ///< event value
? ? ?union ?{
? ? ? ?osMailQId ? ? ? ? ? ? mail_id; ? ? ///< mail id obtained by \ref osMailCreate
? ? ? ?osMessageQId ? ? ? message_id; ? ? ///< message id obtained by \ref osMessageCreate
? ? ?} def; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ///< event definition
? } osEvent;
總結(jié)
以上是生活随笔為你收集整理的FreeRtos osMessagePut osMessageGet 函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 210串口控制台-210移植printf
- 下一篇: python数据库操作之pymysql模