在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)多任務(wù)框架設(shè)計(jì)

            單片機(jī)多任務(wù)框架設(shè)計(jì)

            作者:高林,黃敏,羅江(江西方興科技有限公司,南昌 330025) 時(shí)間:2021-11-15 來(lái)源:電子產(chǎn)品世界 收藏
            編者按:?jiǎn)纹瑱C(jī)將各功能部件集成在一塊芯片上,集成度高,體積小,可以滿足控制和運(yùn)行的需要。單片機(jī)有豐富的輸入輸出管腳,很容易構(gòu)成各種規(guī)模的計(jì)算機(jī)應(yīng)用系統(tǒng)。鑒于單片機(jī)的特點(diǎn),單片機(jī)廣泛應(yīng)用,種類繁多。對(duì)應(yīng)不同的單片機(jī)系列,簡(jiǎn)單可靠的嵌入式程序框架便于開(kāi)發(fā)、移植以及維護(hù),縮短產(chǎn)品的程序開(kāi)發(fā)周期。

            應(yīng)用廣泛,內(nèi)部資源搭配豐富。雖然豐儉由人,但是在選型的時(shí)候,我們往往會(huì)選擇性價(jià)比相對(duì)較高的。選定了,程序設(shè)計(jì)工作量也不小。如何方便快捷的移植、開(kāi)發(fā)調(diào)試以及維護(hù),可以實(shí)現(xiàn)是程序設(shè)計(jì)人員追求的縮短設(shè)計(jì)周期的目標(biāo)。

            本文引用地址:http://www.biyoush.com/article/202111/429669.htm

            1   框架分析

            跑系統(tǒng)的單片機(jī)可以更有效支持多任務(wù),完成更加復(fù)雜的任務(wù),但需要更大的存儲(chǔ)空間用于系統(tǒng)程序和用戶程序;裸跑的單片機(jī)只能進(jìn)行單任務(wù),對(duì)存儲(chǔ)空間需求較低。在這里主要研究一種多任務(wù)程序框架設(shè)計(jì),讓裸奔的單片機(jī)跑出操作系統(tǒng)的感覺(jué),單片機(jī)雖然是裸機(jī)奔跑,但是往往現(xiàn)實(shí)的需要決定了我們必須跑出操作系統(tǒng)的姿態(tài)——多任務(wù)程序。

            系統(tǒng)實(shí)現(xiàn)多任務(wù),最重要的特點(diǎn)是分時(shí)和消息傳遞與處理。引用一個(gè)網(wǎng)友的總結(jié):stateMachine +timerTick + queue。

            queue,在設(shè)計(jì)框架時(shí)需要設(shè)計(jì)一個(gè)消息隊(duì)列貫穿整個(gè)系統(tǒng),把這個(gè)隊(duì)列機(jī)制做成通用模塊,在不同的程序執(zhí)行模塊中調(diào)用。消息隊(duì)列用于緩沖事件,事件不知道什么時(shí)候會(huì)到來(lái),也不能保證來(lái)了就能迅速得到處理,使用消息隊(duì)列,可以保證每個(gè)事件都能處理到。消息通常分為兩種類型:①外部事件收集,然后存儲(chǔ)到隊(duì)列,如按鍵、IO 中斷、時(shí)鐘任務(wù)等硬件發(fā)出;②在任務(wù)處理過(guò)程中,一個(gè)任務(wù)觸發(fā)新的任務(wù),例如在藍(lán)牙遙控器中,接收解析串口數(shù)據(jù)的任務(wù)中發(fā)出按鍵消息。timerTick,系統(tǒng)的時(shí)鐘基準(zhǔn)。用一個(gè)定時(shí)器來(lái)建立通用定時(shí)器任務(wù),管理不同任務(wù)相關(guān)的多個(gè)定時(shí)器,在定時(shí)到達(dá)時(shí),由定時(shí)器任務(wù)發(fā)出消息。

            stateMachine,任務(wù)收到消息后,根據(jù)當(dāng)前狀態(tài)決定如何處理消息。

            2   框架設(shè)計(jì)

            我們以包含按鍵開(kāi)關(guān)一個(gè)定時(shí)1 s 的LED 燈閃爍為例,示例包含框架的全部?jī)?nèi)容。

            圖1是程序流程圖。

            image.pngimage.png

            圖1 程序流程

            首先是消息隊(duì)列、時(shí)鐘任務(wù)、消息的定義:

            image.png

            其次是從頂層主程序設(shè)計(jì)開(kāi)始,再到各功能模塊的設(shè)計(jì):

            image.png

            1)頂層主程序設(shè)計(jì),系統(tǒng)開(kāi)始進(jìn)行硬件初始化、任務(wù)初始化、時(shí)鐘初始化;然后在1 個(gè)循環(huán)中不停地進(jìn)行循環(huán)事件收集、時(shí)間事件收集和處理、消息隊(duì)列時(shí)間處理。

            image.png

            2)在時(shí)鐘基準(zhǔn)的設(shè)置上,建立1 個(gè)1 ms 的定時(shí)器,在定時(shí)器中斷里判斷開(kāi)啟的定時(shí)任務(wù)是否發(fā)生,滿足條件設(shè)置定時(shí)標(biāo)志,同時(shí)關(guān)閉此項(xiàng)定時(shí)任務(wù)。

            image.png

            3)循環(huán)事件收集:在循環(huán)中判斷是否有按鍵按下,如有按鍵按下,發(fā)送按鍵消息。

            image.png

            4)時(shí)間事件收集:判斷定時(shí)服務(wù)里設(shè)置的定時(shí)標(biāo)志做相關(guān)的時(shí)間事件處理。

            image.png

            5)消息隊(duì)列處理:判斷消息隊(duì)列是否為空,當(dāng)不為空時(shí)進(jìn)行消息處理。

            image.png

            image.png

            image.png

            3   任務(wù)添加

            如何根據(jù)實(shí)際應(yīng)用的需要在主體結(jié)構(gòu)中加入新的任務(wù),如下以串口通信為例。

            1)添加消息定義:在消息定義enumEventList 里面加入串口功能定義。

            2)添加消息收集程序:在串口中斷里接收數(shù)據(jù),并把數(shù)據(jù)寫到串口數(shù)據(jù)緩沖器,在循環(huán)事件收集里面進(jìn)行串口數(shù)據(jù)分析,根據(jù)收到的數(shù)據(jù)完整性和協(xié)議分析,發(fā)出串口功能的消息到消息隊(duì)列。

            3)添加消息處理程序:在消息隊(duì)列處理里面加入串口功能對(duì)應(yīng)的處理功能。

            4   結(jié)束語(yǔ)

            整體看來(lái)我們的程序框架就成了通用的模板了,根據(jù)自己選定的MCU,選個(gè)定時(shí)器,再添加自己的事件收集、事件處理以及時(shí)間任務(wù)即可,非常靈活方便實(shí)用。

            參考文獻(xiàn):

            [1] 李寧.基于MDK的STM32處理器開(kāi)發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.

            [2] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II[M].邵貝貝,等,譯.北京:北京航空航天大學(xué)出版社,2003.

            [3] 孫涵芳,徐愛(ài)卿.MCS-51/96系列單片機(jī)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1988.

            [4] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程:入門、提高、開(kāi)發(fā)、拓展全攻略.北京:電子工業(yè)出版社,2009.

            [5] 徐愛(ài)鈞.Keil C51單片機(jī)高級(jí)語(yǔ)言應(yīng)用編程技術(shù).北京:電子工業(yè)出版社,2015.

            (本文來(lái)源于《電子產(chǎn)品世界》雜志2021年10月期)



            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉