嵌入式實時操作系統μC/OS-II串口通信的設計與實現
由該流程圖可以看出:本程序設計中創建了4個任務,即LED顯示任務,液晶顯示任務,串口數據發送任務和數據發送控制任務。每一個任務都要有相應的優先級和任務堆棧空間,程序設計中每個任務的堆棧空間為512個字節,優先級依次為11,13,4,6。
ST公司用標準的ANSI C封裝了ARM微處理器中各個功能寄存器,為用戶應用程序的開發提供了豐富的固件庫(Firmware)。固件庫方便用戶對底層微處理器外設進行初始化配置,如串口初始化函數為void USARTConfigurtion(void),具體代碼如下:本文引用地址:http://www.104case.com/article/156583.htm
初始化操作包括了時鐘初始化、中斷初始化,I/O接口初始化,串口初始化等。主程序在完成初始化操作后創建信號量、消息郵箱和任務創建。由于信號量、郵箱都是事件類型,所以需用OS_EV-ENT來定義,信號量、郵箱的建立由函數App_EventCreate()完成。
使用信號量和消息郵箱可以保持任務之間的通信的同步,串口數據發送任務App_TaskSendata(void-*p_arg)發送信號量App_UserIFSem通知數據發送控制任務App_TaskSendata Ctrl(void*p_arg),數據發送控制任務在接收到信號量App_User IFSem后,發送消息(www.Real Vie-w.com\n)給指定郵箱App_UserIFMbox,串口調用數據發送函數USART_Send Data(),串口數據發送任務數據發送完成后發送通知信號量App_ UserIFSeml給數據發送控制任務,數據發送控制任務在接收到發送完成信號量App_UserIFSeml后,向指定郵箱發送另一則消息(www.xust. edu.cn\n),數據發送任務在接收到消息郵箱后通過串口發送接收到的消息內容給PC機。具體代碼如下:
評論