在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入介紹嵌入式開發中三種不同的程序架構

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2022-05-24 16:02 ? 次閱讀

前言

嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。

軟件架構對于系統整體的穩定性和可靠性是非常重要的,一個合適的軟件架構不僅結構清晰,并且便于開發。

我相信在嵌入式單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件開發中,程序架構主要分為三種,本篇文章將對這三種程序架構做出詳解。

軟件架構存在的意義

可以說一個好的程序架構,是一個有經驗的工程師和一個初學者的分水嶺。軟件架構對于開發人員是友好的,你希望先執行什么任務后執行什么任務,或者這一個時間點執行什么任務下一個執行什么任務,又或者什么事件會同步到某個任務等等,在不同的軟件架構下,解決上述問題的具體方法都是有所區別的。

軟件架構對開發者最大的幫助是:幫助開發者掌控整個工程的框架,當你熟練使用其中某一個程序架構后,對于系統中出現的bug你一定能夠快速的定位并解決。當然,我建議要根據需要選擇合適的軟件架構進行開發,具體原因在文章后面會進行介紹。

深入介紹三種不同的程序架構

三種常用的軟件架構有:順序執行的前后臺系統、時間片輪詢系統和多任務操作系統:STM32單片機開發中的RTOS。為了讓大家有一個更為清晰的認識,我分別用三種軟件架構對一個實例進行介紹說明。這個實例如下:它有4個任務,這4個任務為按鍵掃描、聲光報警、顯示屏刷新和超聲波測距。這個實例的具體功能是通過按鍵設置測量距離的閾值,當測距距離低于設置的閾值時,觸發聲光報警并且將測量距離實時顯示在顯示屏上(這個應用是汽車倒車雷達的具體體現)。

1 順序執行的前后臺系統

在順序執行的前后臺系統中,我會把鍵盤掃描用查詢的方式放在while(1)中,而顯示屏刷新和超聲波測距使用中斷,在中斷服務函數中獲取測量距離后進行顯示,在主函數的循環中進行按鍵的檢測,聲光處理也放在主循環中。這樣整個程序就以變量標志的同步方式在主循環和后臺中斷中執行,對應的程序代碼如圖所示:

3e999498-da78-11ec-ba43-dac502259ad0.jpg

上面代碼是順序執行前后臺系統的主函數。

3eb734da-da78-11ec-ba43-dac502259ad0.jpg

如上代碼,順序執行前后臺系統的中斷服務函數。

這種架構的優點是使用簡單易于理解,而缺點是每個任務所占的CPU時間過長的話,會導致程序的實時性能差,就比如按鍵的檢測等。

2 時間片輪詢系統和多任務操作系統

時間片輪詢法實際上通常出現在操作系統中,也就是說他屬于操作系統,但在這里所說的是基于前后臺系統的時間片輪詢。

時間片輪詢法的實質其實就是選出一個定時器,每進一次定時中斷對計數值進行自加,在主循環中根據這個計數值執行任務,這個計數值也就是任務輪詢的時間片。

在這個實例中,如果采用時間片輪詢系統的話,首先選用主控芯片的任一定時器,定時器定時時間周期由我們決定,為了保證實時性和運行效率,這個值通常取10ms、30ms、50ms等,我會將按鍵掃描輪值值設置為20ms,因為按鍵抖動的時長一般為20ms,這樣處理既達到了消抖的目的,又不會漏掉按鍵的檢測。

而顯示屏的刷新設置為30ms,如果你覺得刷新反應慢了也可以修改這一輪詢值得到改善;而超聲波測距的輪詢值設置為100ms,即每隔100模式觸發測距一次,這個測距頻率已經能夠滿足大多數的情況了。

程序代碼如下:

3eceb5c4-da78-11ec-ba43-dac502259ad0.jpg

如上代碼,時間片輪詢系統的主函數。

3ef774b4-da78-11ec-ba43-dac502259ad0.jpg

如上代碼,時間片輪詢系統的定時器中斷函數。

可以看出時間片輪詢法相比順序執行還是有很大優勢的,既有順序執行法的優點,也有操作系統的部分優點。

3 多任務操作系統

操作系統的本身是一個比較復雜的東西,任務的管理和調度實現的底層是很復雜和困難的。

但是,我們一般都是把操作系統本身作為一個工具一個平臺,我們的目的是使用它的功能而不是開發一個操作系統。

我使用過ucosfreertos小型的實時操作系統,也使用過Linux大型的操作系統,有了操作系統,不管是對于程序的穩定性和開發的效率都會好很多。

我們在使用操作系統的時候更多的需要去學習和理解它的一些調度和通信的方式。

實際上真正能使用操作系統的人并不多,反而是跑裸機的占大多數,這也和產品的具體要求有關,很多簡單的系統只需要裸機即可滿足。

在這里本我不過多的介紹操作系統本身,因為操作系統確實挺復雜的,下面圖例中的代碼是在freertos中創建按鍵控制LED亮滅的程序結構,大家可以對比一下:

3f1cde0c-da78-11ec-ba43-dac502259ad0.jpg

如上,freertos多任務系統中主函數。

3f3ae94c-da78-11ec-ba43-dac502259ad0.jpg

如上,freertos多任務操作系統中的任務回調函數。

如何選擇合適的軟件架構

我使用過多種不同MCU做項目開發,例如:STM32、STC15、新唐等,也接觸過復雜的設計需求,例如:車載智能系統和智能家居,跑過操作系統ucos、freertos和Linux等等,在回到裸機開發時,就會不然而然的去思考完整系統的軟件架構的設計問題,相信在讀者中開發裸機的也占大多數。

我認為沒有最好的軟件架構(程序架構),而是只有最合適的。因為在不同的應用場景中適合采用不同的程序設計,而單純的去比較哪種程序架構是最好的沒有什么實際的意義。

那接下來我們來對具體的應用場景進行分析:

在一些邏輯清晰功能單一的系統中就很適合選擇順序執行的前后臺架構,這個軟件架構往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控燈泡等;

在一些資源缺乏的單片機并且對系統可靠性要求較高的情況下非常適合,因為這種方法的系統耗費比較小,只是犧牲了一個定時器而已,但是選擇此種程序架構需要我們對時間片進行深思熟慮的劃分;

最后,在一些功能復雜,邏輯控制較為困難的系統中就適合選擇多任務操作系統,比如視頻監控系統、無人機等等應用場景。

作為嵌入式軟件工程師,掌握這三種軟件架構是非常有必要的,它們可以讓我們在設計程序時擁有更多的選擇和思考,而每一種不同的程序架構都具備它自己的優勢與不足,這需要我們去用心實踐方可體會到它的奧妙。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5142

    文章

    19561

    瀏覽量

    315400
  • 程序
    +關注

    關注

    117

    文章

    3824

    瀏覽量

    82498
  • 架構
    +關注

    關注

    1

    文章

    528

    瀏覽量

    25872

原文標題:嵌入式開發中的程序架構

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式開發入門指南:從零開始學習嵌入式

    基礎 3. 學習路徑推薦第一階段:熟悉開發環境(如Keil、IAR、STM32)第二階段:掌握裸機編程與驅動開發階段:學習RTOS(實時操作系統)如FreeRTOS第四階段:深入
    發表于 05-15 09:29

    嵌入式開發:高門檻的系統性工程與 996 的行業困局

    嵌入式開發的門檻,往往被培訓機構和表象所掩蓋。許多人誤以為 “用 C 語言寫個跑在 ARM 上的程序” 就是嵌入式,實則連皮毛都未觸及。真正的嵌入式開發是硬件與軟件深度融合的系統性工程
    的頭像 發表于 04-09 11:06 ?269次閱讀
    <b class='flag-5'>嵌入式開發</b>:高門檻的系統性工程與 996 的行業困局

    2025年嵌入式開發趨勢:新技術如何影響你的工作?

    嵌入式開發的世界正在快速變化,新技術的崛起正悄然改變硬件設計、軟件架構以及開發方式。無論你是剛入門的新手,還是經驗豐富的工程師,理解這些趨勢不僅能幫助你應對技術變革,還能在職業發展中占據主動
    的頭像 發表于 03-14 17:36 ?1296次閱讀
    2025年<b class='flag-5'>嵌入式開發</b>趨勢:新技術如何影響你的工作?

    嵌入式系統開發圣經【干貨】

    內容包括:嵌入式系統的介紹嵌入式SoC硬件系統概論、嵌入式系統軟件開發。適用于產品主管、系統設計分析人員及欲進入該領域的工程師。本資料詳細
    發表于 03-12 13:58

    BlackBerry QNX推出通用嵌入式開發平臺

    BlackBerry有限公司(紐交所代碼:BB;多倫多證券交易所代碼:BB)旗下部門QNX今日宣布推出QNX 通用嵌入式開發平臺(General Embedded Development
    的頭像 發表于 03-11 16:04 ?559次閱讀

    代碼+案例+生態:武漢芯源半導體CW32嵌入式開發實戰正式出版

    尊敬的各位電子工程師、嵌入式開發愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導體的單片機CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發表于 03-03 15:15 ?574次閱讀
    代碼+案例+生態:武漢芯源半導體CW32<b class='flag-5'>嵌入式開發</b>實戰正式出版

    代碼+案例+生態:武漢芯源半導體CW32嵌入式開發實戰正式出版

    關于 CW32 單片機的書籍。在這本書中,我們從最基礎的知識講起,詳細介紹了 CW32 單片機的硬件架構、內核特性、存儲系統以及各類外設功能。無論是剛剛踏入嵌入式開發領域的新手,還是經驗豐富的專業人士
    發表于 03-03 15:14

    盤點工程師常用的嵌入式開發工具

    嵌入式開發涉及硬件與軟件的緊密結合,開發工具的選擇對效率和質量至關重要。以下是嵌入式開發中常用的工具分類及代表性工具,涵蓋開發全流程: 1. 集成
    的頭像 發表于 02-07 10:06 ?1790次閱讀

    嵌入式開發必備-RK3562演示Linux常用系統查詢命令(上)觸覺智能出品

    實用干貨!嵌入式開發學習必備-RK3562演示Linux常用系統查詢命令(上)關注觸覺智能持續為大家帶來更多嵌入式開發內容
    的頭像 發表于 12-31 10:51 ?117次閱讀
    <b class='flag-5'>嵌入式開發</b>必備-RK3562演示Linux常用系統查詢命令(上)觸覺智能出品

    如何使用 RISC-V 進行嵌入式開發

    RISC-V是一開源的指令集架構(ISA),它允許任何人設計、制造和銷售基于RISC-V的處理器,這為嵌入式開發提供了極大的靈活性和創新空間。以下是使用RISC-V進行嵌入式開發的基
    的頭像 發表于 12-11 17:32 ?1744次閱讀

    零基礎嵌入式開發學習路線

    是一集成了處理器、內存、輸入輸出接口等功能的微型電路板,它是嵌入式開發的基礎硬件設備。學習單片機可以讓你了解硬件的基本原理和操作方法,比如如何連接電源、如何配置引腳、如何編寫驅動程序等。目前應用最多
    發表于 10-25 15:55

    嵌入式開發常見問題排查

    嵌入式開發問題排查很多人認為嵌入式開發很難,主要是因為在這個過程中常常會遇到各式各樣的問題。這些問題的復雜性和多樣性使得許多人感到困惑和無所適從。然而,如果將這些問題逐一拆解,實際上大部分都可以
    的頭像 發表于 09-22 08:04 ?729次閱讀
    <b class='flag-5'>嵌入式開發</b>常見問題排查

    【「ARM MCU嵌入式開發 | 基于國產GD32F10x芯片」閱讀體驗】+書籍整體概況

    一、導言 上周收到《ARM MCU嵌入式開發 | 基于國產GD32F10x芯片》書籍,該紙質書籍內容可謂是面面俱到,由“清華大學出版社”出版,印刷第1版時間為2024年6月份,總共464千字
    發表于 08-25 22:48

    聚焦嵌入式開發中的合規性工具、項目管理工具、版本迭代工具應用

    ,就嵌入式開發與管理領域的最新趨勢、工具選擇以及DevSecOps實踐應用等方面展開了深入探討。 本期對話龍智資深DevSecOps顧問徐晨暉, 分享嵌入式開發中的合規性工具、項目管理和版本管理的工具選擇,以及DevSecOps
    的頭像 發表于 07-29 15:15 ?998次閱讀

    嵌入式開發前景怎么樣?

    嵌入式開發前景非常廣闊,這主要得益于物聯網、人工智能、大數據等技術的快速發展,以及嵌入式系統在各個領域的廣泛應用。以下是對嵌入式開發前景的詳細分析
    的頭像 發表于 07-10 09:00 ?4182次閱讀
    <b class='flag-5'>嵌入式開發</b>前景怎么樣?
    主站蜘蛛池模板: 免费在线视频观看 | 在线三区 | 校园 春色 欧美 另类 小说 | 国产高清在线精品一区 | 国产成人精品日本亚洲直接 | 色人岛| 午夜国产大片免费观看 | 色综合色综合 | 色婷婷国产 | 亚洲综合色一区二区三区小说 | 国产视频每日更新 | 中文天堂在线最新2022更新 | 成人免费看毛片 | 爱爱网站免费 | 免费 的黄色 | h网站在线看 | 精品久久久久国产免费 | 最近2018免费中文字幕视频 | 黄色日屁| 香港三级理论在线观看网站 | 亚洲成av人片在线观看无码 | 特级淫片aaaa毛片aa视频 | 日本亚洲高清乱码中文在线观看 | 高清视频在线播放 | 久久影院午夜伦手机不四虎卡 | 女人张开腿男人桶 | 久久黄色录像 | 日日草天天干 | 热久久久久 | 精品看片 | 性孕妇洗澡video国产 | 免费看片aⅴ免费大片 | eeuss影院www影院夜场 | 色噜噜亚洲 | 欧美大尺度aaa级毛片 | 黄色网 在线播放 | 亚洲免费一区二区 | 亚洲天堂视频一区 | 四虎在线视频 | 插插插叉叉叉 | 人人干人人玩 |