0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機項目有必要分層設(shè)計嗎?

Dp1040 ? 來源:嵌入式專欄 ? 2023-09-23 09:31 ? 次閱讀

有網(wǎng)友問:單片機小項目,有必要做分層設(shè)計嗎?

這個問題,主要看項目本身,以及公司管理。小項目,是有多小?公司對項目的管理是否看重?

正規(guī)一點的公司,從長遠(yuǎn)的角度來說,很有必要做好軟件分層設(shè)計。下面就簡單說兩點編程分層的思想。

分層思想

嵌入式分層思想,可能初學(xué)者不太懂,但你肯定見到過很多類似下面這樣的軟件結(jié)構(gòu)圖。

比如,RT-Thread Nano內(nèi)核結(jié)構(gòu):

ed682100-59a8-11ee-939d-92fbcf53809c.png

STM32Cube軟件結(jié)構(gòu):

ed773b40-59a8-11ee-939d-92fbcf53809c.png

這種軟件結(jié)構(gòu)圖,里面的東西可能有點多,可能你也看不懂。 但是,只要你仔細(xì)一看每個區(qū)域的劃分,你就會發(fā)現(xiàn),它們是把軟件劃分了多個區(qū)域,這里其實就是一種分層的思想。

舉一個例子:一個遙控器控制一個小車運動,包含遙控器的按鍵(比如:前后左右),無線通信(比如:433),小車無線接收,電機驅(qū)動、電機控制算法等。

遇到這種嵌入式軟件開發(fā),你會怎么編程?

1.底層驅(qū)動層小車部分:電機驅(qū)動(比如IO時鐘、PWM配置)封裝成一個函數(shù)、433驅(qū)動封裝成一個函數(shù)。然后把這兩個函數(shù)整理在一個Driver(驅(qū)動)函數(shù)。

遙控部分同理:按鍵驅(qū)動(比如IO時鐘、配置)封裝成一個函數(shù)、433驅(qū)動封裝成一個函數(shù)。

2.中間層這里比如你電機用到了加減速、左右轉(zhuǎn)向的一些算法,封裝成對應(yīng)Middleware中間層模塊函數(shù)(待應(yīng)用層調(diào)用)。

3.應(yīng)用層應(yīng)用層就考驗?zāi)銟I(yè)務(wù)邏輯的一層,也是整合軟件資源的一層。如果你代碼層次畫分的話,業(yè)務(wù)邏輯代碼就很容易。

反之,你代碼很亂,要實現(xiàn)一個業(yè)務(wù)邏輯,可能連續(xù)加班多天,最后寫出來的代碼也是bug無數(shù)。

模塊化

嵌入式編程,模塊化相當(dāng)重要,可以說,它會影響你代碼質(zhì)量、加班多少、甚至升職加薪。

還是上面那個例子:一個遙控器控制一個小車運動,包含遙控器的按鍵(比如:前后左右),無線通信(比如:433),小車無線接收,電機驅(qū)動、電機控制算法等。

如果你把所有代碼都寫在main函數(shù),你說能實現(xiàn)嗎?當(dāng)然,肯定也能實現(xiàn)。 但是,你這樣寫,你的業(yè)務(wù)邏輯代碼是不是很廢腦、很費時間? 還有,你后續(xù)加修改按鍵方式、添加功能,你該怎么辦?

所以,你需要模塊化編程,把一些小模塊分別封裝成函數(shù),提供給對應(yīng)的應(yīng)用層調(diào)用。

上面其實也說了:電機驅(qū)動(比如IO時鐘、PWM配置)封裝成一個函數(shù),這其實就是一個小模塊。 當(dāng)然,這里的驅(qū)動函數(shù)只是一個小模塊,然后還需要進(jìn)一步封裝成“大模塊”。

比如:我這里還引入一個編碼器,閉環(huán)檢測電機速度,通過底層電機驅(qū)動、加減速算法,編碼器等整合成一個電機運動的函數(shù)(模塊):MOTOR_Ctrl(速度,方向)。這就是一個大模塊(當(dāng)然,還可以結(jié)合需求再進(jìn)一步封裝)。

最后,還有很多重要的編程思想,需要開發(fā)者了解并掌握,在一定程度上,你的編程思想決定了你是新手級別,還是大神級別。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635350
  • 無線通信
    +關(guān)注

    關(guān)注

    58

    文章

    4570

    瀏覽量

    143541
  • 電機驅(qū)動
    +關(guān)注

    關(guān)注

    60

    文章

    1217

    瀏覽量

    86758

原文標(biāo)題:單片機項目有必要分層設(shè)計嗎?

文章出處:【微信號:玩點嵌入式,微信公眾號:玩點嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    初學(xué)單片機必要單片機學(xué)習(xí)板嗎?

    初學(xué)單片機必要單片機學(xué)習(xí)板嗎?如果需要的話,請推薦?要求功能強大,附帶資料齊全,適合初學(xué)者,學(xué)完以后還有使用價值。如可以學(xué)別的單片機。回
    發(fā)表于 11-09 14:23

    淺談單片機程序設(shè)計中的“分層思想”

    本帖最后由 ke_c 于 2013-8-1 10:41 編輯 淺談單片機程序設(shè)計中的“分層思想”分層的思想,并不是什么神秘的東西,事實上很多做項目的工程師本身自己也會在用。看了不
    發(fā)表于 08-01 10:38

    學(xué)習(xí)單片機真的必要學(xué)習(xí)匯編

    學(xué)習(xí)單片機真的必要學(xué)習(xí)匯編,從51單片機匯編語言開始學(xué)習(xí),這是入門級的。網(wǎng)上好多都是C語言方面的資料,有的人說沒必要學(xué)匯編,直接學(xué)習(xí)C語言
    發(fā)表于 08-18 07:57

    單片機程序設(shè)計中的“分層思想”是什么意思?

    單片機程序設(shè)計中的“分層思想”
    發(fā)表于 02-22 07:18

    單片機分層屏蔽的設(shè)計思想

    單片機分層屏蔽的設(shè)計思想
    發(fā)表于 02-26 06:19

    單片機項目失敗的原因哪些?

    單片機項目失敗的原因哪些?
    發(fā)表于 04-19 07:33

    MCU級軟件必要分層

    一、MCU級軟件必要分層嗎?1.1 如果不分層會怎樣?看下面這段示例代碼void main(){sys_init()while(1){ //用PA1控制LED亮滅GPIO_SetBi
    發(fā)表于 11-03 08:57

    單片機晶振的必要性_單片機晶振的作用_單片機晶振電路原理(51單片機

    本文首先介紹了單片機晶振的必要性,其次介紹了單片機的作用和原理,最后闡述了單片機晶振的常見問題。
    的頭像 發(fā)表于 04-18 11:49 ?7.4w次閱讀

    51單片機和STM32單片機哪些區(qū)別

    大部分朋友可能都知道51單片機和stm32單片機也知道一般入門會先學(xué)習(xí)51單片機在學(xué)習(xí)stm32單片機會簡單一些,但是對于51單片機和stm
    發(fā)表于 08-13 17:32 ?17次下載
    51<b class='flag-5'>單片機</b>和STM32<b class='flag-5'>單片機</b><b class='flag-5'>有</b>哪些區(qū)別

    單片機程序應(yīng)用、驅(qū)動分層獨立開發(fā)方案

    單片機程序應(yīng)用、驅(qū)動分層獨立開發(fā)方案
    發(fā)表于 11-13 12:36 ?19次下載
    <b class='flag-5'>單片機</b>程序應(yīng)用、驅(qū)動<b class='flag-5'>分層</b>獨立開發(fā)方案

    51單片機仿真設(shè)計項目大全

    51單片機仿真設(shè)計項目大全!
    發(fā)表于 11-23 16:51 ?119次下載
    51<b class='flag-5'>單片機</b>仿真設(shè)計<b class='flag-5'>項目</b>大全

    基于proteus學(xué)習(xí)51單片機項目資料

    為了調(diào)試51單片機的代碼,做了一些仿真,之前打算好好寫寫技術(shù)文章的,后來覺得CSDN關(guān)于51單片機基本的模塊都介紹很詳細(xì),就沒必要再寫了,后面要基本搞stm32實戰(zhàn)的項目了,將自己調(diào)過
    發(fā)表于 11-23 16:51 ?3次下載
    基于proteus學(xué)習(xí)51<b class='flag-5'>單片機</b>的<b class='flag-5'>項目</b>資料

    ARM單片機和STM32單片機之間什么區(qū)別

    單片機工程師在進(jìn)行項目開發(fā)的時候,經(jīng)常需要進(jìn)行單片機選型,根據(jù)項目功能需求選擇合適的單片,這就要求對每種
    的頭像 發(fā)表于 01-07 13:59 ?1.1w次閱讀

    單片機實驗項目分享

    單片機實驗項目分享
    發(fā)表于 02-20 16:22 ?33次下載

    單片機最小系統(tǒng)能夠運行起來的必要條件

    單片機最小系統(tǒng)能夠運行起來的必要條件: 一、硬件方面的必要條件 單片機芯片:單片機最小系統(tǒng)需要選擇一款適合
    的頭像 發(fā)表于 01-15 09:34 ?1403次閱讀