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