目錄
前言
連結
參考
筆錄草稿
建立測試任務部分源碼
LiteOS源碼連結
常見問題
華為開發者社群
華為LiteOS官方教程
我的gitee-LiteOS-mcu
李柱明部落格:https://www.cnblogs.com/lizhuming/
本文連結:https://www.cnblogs.com/lizhuming/p/13944550.html
上面連結
最近工作有點忙,遠嗎閱讀推遲了哈哈
采用傳位址方式
其實這些元件的應用是很簡單的,沒太在意,很快就搭建好看見,準備測試并看源碼,
但是,今天下午卻花了兩小時,僅僅為了測試非拷貝方式通信失敗問題
bug就是我在函數裡建立一個局部存放消息内容的緩沖區,采用函數 <code>LOS_QueueWrite</code> 發送出去
接收時卻出現各種問題,很明顯就是位址錯誤,但是我一丢丢都沒想起消息内容被改寫的注意點,唉
采用位址方式時,必須保該位址内容沒有被修改,且不推薦使用局部變量
本任務用于 LiteOS 消息隊列測試
步驟
建立任務相關值及函數
在 <code>LssAppConfig.h</code> 中添加
任務優先級宏 <code>lssConfigvMsgQueueTaskPRIO (5)</code>
任務堆棧宏 <code>lssConfigvMsgQueueTaskSIZE 512u</code>
任務初始化完成枚舉 <code>evMsgQueueTaskNum = 0x0D,</code>
消息隊列外部句柄 <code>extern UINT32 MsgQueueTask_Handle;</code>
在 <code>main.c</code> 中添加
添加任務頭檔案 <code>#include "MsgQueueAppTask.h"</code>
添加句柄
任務句柄 <code>UINT32 MsgQueueTask_Handle = NULL;</code>
消息隊列測試句柄 <code>UINT32 TestAQue_Handle = NULL;</code>
建立消息隊列任務函數
在啟動任務中
添加 <code>uwRet = Creat_vMsgQueue_Task();</code>,以表示建立該任務
添加 <code>uwRet = LOS_QueueCreate("Msg Queue", 20, &TestAQue_Handle, 0, 10);</code> , 以表示建立消息
建立任務檔案 <code>MsgQueueTask.c</code> 和 <code>MsgQueueTask.h</code>
主要用于消息隊列的業務測試
編寫任務函數 <code>void vMsgQueueTask( void )</code>
消息隊列測試任務源檔案
消息隊列測試任務頭檔案
在 <code>IPCApp.c</code> 檔案中添加兩個測試函數(架構需要)
<code>void IPCAppMsgQueueA(msgIpc_t *msg)</code> 函數
就是消息的發送端
隊列測試函數A
<code>void IPCAppMsgQueueB(msgIpc_t *msg)</code> 函數
隊列測試函數B
頭檔案 <code>PCApp.h</code> 也要做外置函數處理
在 <code>IPCCoreTask.c</code> 檔案中 <code>void msgDecode(msgIpc_t * msg)</code> 函數中添加兩條處理指令(架構需要)
<code>$QA#</code>
<code>$QB#</code>
指令處理添加部分源碼