精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

單片機(jī)項(xiàng)目有必要分層設(shè)計(jì)嗎?

Dp1040 ? 來(lái)源:嵌入式專(zhuān)欄 ? 2023-09-23 09:31 ? 次閱讀

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

這個(gè)問(wèn)題,主要看項(xiàng)目本身,以及公司管理。小項(xiàng)目,是有多小?公司對(duì)項(xiàng)目的管理是否看重?

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

分層思想

嵌入式分層思想,可能初學(xué)者不太懂,但你肯定見(jiàn)到過(guò)很多類(lèi)似下面這樣的軟件結(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)圖,里面的東西可能有點(diǎn)多,可能你也看不懂。 但是,只要你仔細(xì)一看每個(gè)區(qū)域的劃分,你就會(huì)發(fā)現(xiàn),它們是把軟件劃分了多個(gè)區(qū)域,這里其實(shí)就是一種分層的思想。

舉一個(gè)例子:一個(gè)遙控器控制一個(gè)小車(chē)運(yùn)動(dòng),包含遙控器的按鍵(比如:前后左右),無(wú)線通信(比如:433),小車(chē)無(wú)線接收,電機(jī)驅(qū)動(dòng)、電機(jī)控制算法等。

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

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

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

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

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

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

模塊化

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

還是上面那個(gè)例子:一個(gè)遙控器控制一個(gè)小車(chē)運(yùn)動(dòng),包含遙控器的按鍵(比如:前后左右),無(wú)線通信(比如:433),小車(chē)無(wú)線接收,電機(jī)驅(qū)動(dòng)、電機(jī)控制算法等。

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

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

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

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

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

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

    關(guān)注

    6032

    文章

    44525

    瀏覽量

    633266
  • 無(wú)線通信
    +關(guān)注

    關(guān)注

    58

    文章

    4526

    瀏覽量

    143426
  • 電機(jī)驅(qū)動(dòng)

    關(guān)注

    60

    文章

    1208

    瀏覽量

    86631

原文標(biāo)題:?jiǎn)纹瑱C(jī)項(xiàng)目有必要分層設(shè)計(jì)嗎?

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

    單片機(jī)項(xiàng)目失敗的原因哪些?

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

    MCU級(jí)軟件必要分層

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

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

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

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

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

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

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

    51單片機(jī)仿真設(shè)計(jì)項(xiàng)目大全

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

    基于proteus學(xué)習(xí)51單片機(jī)項(xiàng)目資料

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

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

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

    單片機(jī)實(shí)驗(yàn)項(xiàng)目分享

    單片機(jī)實(shí)驗(yàn)項(xiàng)目分享
    發(fā)表于 02-20 16:22 ?33次下載

    單片機(jī)最小系統(tǒng)能夠運(yùn)行起來(lái)的必要條件

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