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