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