《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 嵌入式實時操作系統μC/OS-II串口通信的設計與實現
嵌入式實時操作系統μC/OS-II串口通信的設計與實現
宋 亮,苗 瓊
摘要: 為解決實時操作系統μC/OS-II串口通信設計中信號量、消息郵箱使用方法的問題,提出了一種以STM32V評估板為硬件平臺和μC/OS-Ⅱ的串口通信程序設計方案。該方案采用Cortex-M3架構的ARM處理器STM32F103VB作為主控制芯片,ST3232作為串口通信電平轉換器。軟件設計部分描述了信號量、消息郵箱的應用場合和基本操作方法,通過信號量和消息郵箱的配合使用保證任務間的數據傳輸的同步性。給出了整個程序中的設計思路,程序開發使用STM32F103VB處理器自帶的固件庫,減少了繁瑣的寄存器配置,降低了程序開發強度。實驗驗證了在2種不用通信速率下數據傳輸具有誤碼率低、傳輸穩定可靠的特點,并且若能夠配合相應的數據校驗算法就可將其應用于工業現場的數據通信。
Abstract:
Key words :

    ARM是目前嵌入式領域中應用最廣泛的RISC微處理器結構,以低成本、低功耗、高性能的特點占據了嵌入式系統應用領域的領先地位,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場。STM32F103VB是基于ARM新內核Cortex-M3的通用微處理器,STM32V評估板是基于該芯片的學習板并集成了仿真調試器(Ulink_Me),可以方便用戶快速學習和開發用戶程序。目前常見的嵌入式系統有:WinCE、Linux、pSoS、VxWorks和μC/OS-II等。μC/OS-Ⅱ是專門為嵌入式系統應用設計的,具有源碼公開、實時性好、可移植裁剪、高效穩定和教學科研免費使用等特點,已經成功移植到8、16、32和64位等多種微處理器上,廣泛應用于照相攝影、醫療器械、音響設備、工業機器人控制、發動機控制、航空器、高速公路電話系統、自動提款機等眾多領域。這里以STM32V評估板為硬件開發平臺,結合μC/OS-II嵌入式操作系統,設計了基于信號量、消息郵箱的串口通信應用程序。

1 信號量、消息郵箱
    μC/OS-II由事件(Event)驅動,一般事件包括信號量(Semaphores)、互斥信號量(Mutex semaphores)、消息郵箱(Message Mail boxes)、消息隊列(Message Query)、事件標志組(Event Flag Group)等。其中信號量和消息郵箱作為一種常見的通信機制,在數據通信過程中應用最為廣泛。
1.1 信號量(Semaphores)
    μC/OS-II的信號量由2部分組成:一個是信號的計數值(0~65 535);另一個是由等待該信號量的任務組成的等待任務列表。信號量可用于以下場合:允許一個任務與其他任務或中斷同步;取得共享資源的使用權(滿足互斥條件);標志事件的發生。
    對信號量一般可以實施以下3種操作:初始化(INITIALIZE)信號量或者稱為創建信號量(CREATE);等待信號量(WAIT)或者稱為掛起信號量(PEND);發送信號量(POST)。
    信號量在初始化過程中需要給信號量賦初值,等待信號量的任務表(WAWING LIST)應清為空。信號量的使用需要調用相應的函數并配置其相關的宏定義,具體如表1所示。

1.JPG


1.2 消息郵箱(Message Mail boxes)
    消息郵箱能使任務或中斷服務向另外一個任務發送一個指針型的變量,這個指針指向一個包含指定“消息”的數據結構。消息郵箱發送的不是消息本身,而是消息的地址指針。
    消息郵箱可用于通知一個事件發生或作為二值信號量使用。消息郵箱的工作原理是郵箱在初始化時建立一個等待消息的任務列表,當郵箱為空時,等待消息的任務就掛起,并且被加入到等待消息的任務列表中。當郵箱收到消息時,等待任務列表中優先級最高的任務或者最先等待消息的任務得到消息,且轉入就緒并從任務列表中清除。
    對消息郵箱的操作一般有3種:郵箱初始化(INITIALIZE),或者稱為建立郵箱(CREATE);發送消息給郵箱(POST);等待消息進入郵箱(PE-ND);無等待請求郵箱消息(ACCEFT)。
    消息郵箱的使用需要調用相應的函數并配置其相關的宏定義,具體如表2所示。

2.JPG

 

2 硬件開發設計
2.1 硬件開發平臺
    以STM32V評估板為硬件開發平臺,該評估板采用ST公司32位ARM微處理器STM32F103VB,該芯片最大時鐘頻率72 MHz,內置大容量存儲器包括128 KB的高速Flash和20 K的SRAM,豐富的外設接口:80個高速I/O接口,3個USART,2個I2C,2個SPI,7通道的DMA,RTC等。STM32V開發板將這些外設接口全部引出,自帶LCD液晶顯示并集成調試工具,用戶可方便設計、調試和查看程序運行結果等。評估板功能模塊組成如圖1所示,主要包括以下部分:模擬輸入信號部分、跳線配置、USB電源供給、液晶顯示、串口通信、CAN通信、復位/輸入按鈕、LED顯示和SD卡存儲。

3.JPG


2.2 通信電路
    計算機與外界的信息交換稱為通信。通信基本方式分為串行通信和并行通信兩種。串行通信是指一個數據是逐位順序傳送的通信方式,串行通信有同步和異步兩種基本的通信方式。
    其中,同步通信是通過同步時鐘來實現發送和接收數據的同步。而異步通信規定了字符數據的傳送格式,即每個數據以相同的幀格式傳送。每一幀信息由起始位、數據位、奇偶校驗位和停止位組成。依據起始位在每個字符數據開始時使發送和接收同步,停止位則作為字符結束的標志。
    PC機的串行通信接口采用的是EIA RS-232E標準串行通信協議。在本設計中,主控芯片STM32F103VB的接口采用TTL電平,規定0~0.8 V為“0”電平,2~5V為“1”電平,它不能直接與PC機標準串行通信接口連接,必須設計TTL電平到RS-232協議電平信號的轉換電路。串口RS-232電平與STM32F103VB微處理器TTL電平轉換由開發板上的ST3232完成,接口電路如圖2所示。

4.JPG

3 軟件開發設計
    選擇RealView MDK軟件作為開發工具,它是針對各種嵌入式處理器開發的軟件開發工具。與ARM之前的工具包ADS等相比,RealView編譯器可將代碼密度提高10%,性能改善20%,并且支持ARM7、ARM9和最新的Cortex-M3核處理器。編程語言可以使用C或者C++語言,支持在線調試。
    嵌入式實時操作系統μC/OS-Ⅱ可以管理256個任務,除了系統任務外,用戶應用程序最多可以有248個任務,而中斷嵌套的層數最多也可以到255層。任務創建過程包含了任務堆棧大小的設置、優先級分配以及在通信或保持同步過程中使用的信號量和郵箱。在STM32V評估板上通過RS232接口實現了評估板與PC機的通信,軟件設計流程如圖3所示,在完成相應的初始化之后,創建程序設計中用到的信號量和消息郵箱,緊接著需要創建應用任務,最后啟動系統。

5.JPG


    由該流程圖可以看出:本程序設計中創建了4個任務,即LED顯示任務,液晶顯示任務,串口數據發送任務和數據發送控制任務。每一個任務都要有相應的優先級和任務堆??臻g,程序設計中每個任務的堆??臻g為512個字節,優先級依次為11,13,4,6。
    ST公司用標準的ANSI C封裝了ARM微處理器中各個功能寄存器,為用戶應用程序的開發提供了豐富的固件庫(Firmware)。固件庫方便用戶對底層微處理器外設進行初始化配置,如串口初始化函數為void USARTConfigurtion(void),具體代碼如下:

6.JPG

7.JPG

    初始化操作包括了時鐘初始化、中斷初始化,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機。具體代碼如下:

8.JPG

 

9.JPG
    圖4為串口通信波特率設定為9 600 bps和115 200 bps時,在串口小助手中觀察到的程序運行后的測試結果,結果表明程序按照預先設定好的發送要求不斷向PC機發送數據,并且通信穩定,在測試過程中未出現亂碼和通信異常中斷情況,程序設計達到了預期目標。通常在工業現場實際應用中需要保證數據傳輸的可靠性,一般都需要在數據的發送和接收端對數據進行相應的數據校驗,常見的數據校驗算法是CRC校驗,可以采用8或16位的CRC校驗方式。在該通信過程中并未使用校驗算法來檢測數據傳輸的一致性,若在數據傳輸過程中添加相應的CRC校驗算法,就可以最大程度地減少數據傳輸的誤碼率,保證數據傳輸的準確性。在后期的研究學習中也可以嘗試將其應用于工業現場以測試其工作的可靠性。

10.jpg

4 結論
    本文以STM32V評估板為硬件開發平臺,結合μC/OS-II嵌入式操作系統中信號量和消息郵箱,設計了基于信號量、消息郵箱的串口通信應用程序,并通過實驗驗證了該串口應用程序在保證任務間通信同步情況下,數據傳輸具有較好的穩定性和可靠性,達到了程序設計預期目標。
 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品美女久久| 亚洲国产女人aaa毛片在线| 久久手机免费观看| 欧美亚洲免费在线| 一区二区免费在线播放| 日韩视频在线永久播放| 亚洲国产日日夜夜| 欧美在线影院| 欧美一区二区三区在线视频 | 伊甸园精品99久久久久久| 国产亚洲成av人片在线观看桃| 国产伦精品一区二区三区视频黑人| 国产精品毛片在线| 国产精品久久7| 国产精品美女一区二区在线观看| 国产精品第一页第二页第三页| 欧美日韩一区二区三区在线| 欧美日韩在线第一页| 欧美视频免费看| 国产精品久久久久久久app| 国产精品美女久久久免费| 国产精品一级| 国产一区高清视频| 一区二区在线观看视频| **欧美日韩vr在线| 亚洲精品国产精品国自产在线| 亚洲日韩中文字幕在线播放| 亚洲毛片播放| 亚洲性线免费观看视频成熟| 午夜精品999| 亚洲成色999久久网站| 91久久在线视频| 日韩视频一区二区| 亚洲图片激情小说| 亚洲欧美综合一区| 欧美在线视频观看免费网站| 久久天天躁夜夜躁狠狠躁2022 | 国产一区91| 在线观看av不卡| 亚洲国产欧美日韩精品| 99在线热播精品免费| 亚洲一区黄色| 亚洲电影av| 亚洲视频观看| 久久国产精品久久精品国产| 老司机一区二区三区| 欧美区二区三区| 国产女人精品视频| 原创国产精品91| 日韩一级网站| 午夜日韩电影| 日韩网站在线观看| 亚洲欧美日韩综合国产aⅴ| 久久天天综合| 欧美视频在线免费| 黑人一区二区三区四区五区| 亚洲日韩欧美视频一区| 午夜国产精品视频| 亚洲美女视频网| 欧美一级片久久久久久久| 欧美gay视频| 国产精品日韩在线| 在线国产亚洲欧美| 亚洲综合二区| 亚洲蜜桃精久久久久久久 | 亚洲欧美卡通另类91av| 另类图片国产| 国产精品久99| 亚洲福利视频一区二区| 亚洲午夜黄色| 亚洲欧洲一区二区在线观看| 亚洲自拍另类| 欧美国产日产韩国视频| 国产欧美视频一区二区| 亚洲日本欧美日韩高观看| 欧美一区二区精品在线| 一个人看的www久久| 久久久久久亚洲综合影院红桃| 欧美日韩在线一二三| 黄色精品一区| 亚洲四色影视在线观看| 最新精品在线| 久久九九免费| 国产精品露脸自拍| 亚洲人成人99网站| 久久精品国产一区二区三区免费看 | 伊人久久综合| 午夜在线精品偷拍| 亚洲视频一区二区在线观看| 开心色5月久久精品| 国产精品入口尤物| 日韩天堂av| 亚洲精品久久视频| 久久全球大尺度高清视频| 国产精品伦一区| 99在线精品视频在线观看| 亚洲人成在线播放| 久久午夜av| 国产日韩精品一区观看| 亚洲视频在线免费观看| 99国产精品99久久久久久| 美女视频黄a大片欧美| 国产一区二区三区网站| 亚洲欧美成人一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美精品一区二区三区蜜桃| 亚洲第一精品影视| 亚洲成人在线免费| 午夜在线电影亚洲一区| 欧美日韩综合精品| 最新成人av网站| 亚洲三级视频| 欧美成人高清视频| 在线成人www免费观看视频| 久久精品99国产精品日本| 欧美一区二区黄色| 国产精品尤物| 香蕉久久一区二区不卡无毒影院 | 一区在线免费观看| 亚洲丰满在线| 免费一区二区三区| 亚洲丁香婷深爱综合| 亚洲日本成人网| 女女同性精品视频| 亚洲成色777777女色窝| 亚洲国产精品一区制服丝袜| 嫩草国产精品入口| 亚洲国产精品一区二区www在线| 亚洲国产欧美一区| 欧美国产欧美亚州国产日韩mv天天看完整| 在线成人av| 亚洲精品乱码久久久久久久久| 欧美护士18xxxxhd| 日韩性生活视频| 亚洲一区中文| 国产精品亚洲成人| 欧美一区二区| 久久亚洲春色中文字幕久久久| 韩国女主播一区二区三区| 亚洲国产精品精华液网站| 免费欧美在线视频| 亚洲靠逼com| 亚洲伊人一本大道中文字幕| 国产精品美女在线观看| 午夜视频一区在线观看| 久久久久久久久岛国免费| 激情一区二区三区| 亚洲乱码国产乱码精品精天堂 | 久久精品国产精品| 欧美成人黄色小视频| 亚洲巨乳在线| 欧美一区二区免费观在线| 激情成人亚洲| av成人激情| 国产精品麻豆成人av电影艾秋| 亚欧美中日韩视频| 免费日韩精品中文字幕视频在线| 亚洲裸体视频| 性欧美xxxx大乳国产app| 激情久久影院| 99精品国产热久久91蜜凸| 国产精品美女主播在线观看纯欲| 久久精品九九| 欧美日韩国产一区| 午夜久久久久久| 欧美高清你懂得| 亚洲性感美女99在线| 久久伊伊香蕉| 日韩视频在线免费观看| 久久精品国产免费看久久精品| 亚洲国产第一页| 欧美一二三视频| 亚洲国产一区二区三区a毛片| 亚洲欧美乱综合| 亚洲高清av| 欧美一区二区| 亚洲精品日本| 久久婷婷成人综合色| 一区二区三区回区在观看免费视频| 久久精品伊人| 日韩视频在线观看一区二区| 久久精品国语| 在线亚洲一区二区| 欧美成人有码| 午夜激情久久久| 欧美日韩亚洲三区| 久久精品久久99精品久久| 国产精品高潮呻吟| 亚洲伦理一区| 好吊妞**欧美| 午夜精品久久久久久久男人的天堂 | 午夜精品福利视频| 欧美日韩亚洲系列| 亚洲国产日韩综合一区| 国产美女一区二区| 一本色道久久加勒比精品| 激情综合电影网| 午夜精品视频网站| 亚洲精品免费一区二区三区| 久久亚洲一区二区三区四区|