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

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

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

嵌入式軟件開發(fā)怎么編程

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:RTThread物聯(lián)網(wǎng)操作 ? 2021-09-03 14:48 ? 次閱讀

嵌入式開發(fā),除了掌握基本的編程語法之外,編程的思想也是很關(guān)鍵,下面說兩點(diǎn)編程思想。

1分層思想

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

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

嵌入式軟件開發(fā)怎么編程

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

嵌入式軟件開發(fā)怎么編程

這種軟件結(jié)構(gòu)圖,里面的東西可能有點(diǎn)多,可能你看不懂。

但是,只要你仔細(xì)一看每個(gè)區(qū)域的劃分,你就會(huì)發(fā)現(xiàn),它們是把軟件劃分了多個(gè)區(qū)域,這里其實(shí)就是一種分層的思想。

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

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

1.底層驅(qū)動(dòng)層小車部分:電機(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ù)邏輯的一層,也是整個(gè)軟件資源的一層。如果你代碼層次畫分的話,業(yè)務(wù)邏輯代碼就很容易。

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

2模塊化

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

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

如果你把所有代碼都寫在main函數(shù),你說能實(shí)現(xiàn)嗎?當(dāng)然,肯定也能實(shí)現(xiàn)。

但是,你這樣寫,你的業(yè)務(wù)邏輯代碼是不是很廢腦、很費(fèi)時(shí)間?

還有,你后續(xù)加修改按鍵方式、添加功能,你該怎么辦?

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

上面其實(shí)也說了:電機(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ī)速度,通過底層電機(jī)驅(qū)動(dòng)、加減速算法,編碼器等整合成一個(gè)電機(jī)運(yùn)動(dòng)的函數(shù)(模塊):MOTOR_Ctrl(速度,方向)。這就是一個(gè)大模塊(當(dāng)然,還可以結(jié)合需求再進(jìn)一步封裝)。

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

原文標(biāo)題:嵌入式開發(fā)中的兩點(diǎn)編程思想

文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:pj

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

    關(guān)注

    58

    文章

    4459

    瀏覽量

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

    關(guān)注

    60

    文章

    1186

    瀏覽量

    86502
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    239

    瀏覽量

    26586
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1251

    瀏覽量

    39755

原文標(biāo)題:嵌入式開發(fā)中的兩點(diǎn)編程思想

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式軟件開發(fā)需要學(xué)習(xí)什么?

    嵌入式軟件開發(fā)需要學(xué)習(xí)什么? 嵌入式軟件開發(fā),一個(gè)發(fā)展迅速的行業(yè),不少學(xué)者入門的第一個(gè)問題肯定是嵌入式
    發(fā)表于 01-31 14:45

    嵌入式軟件開發(fā)是做什么的

    /QNX+ARM匯編; ?。?)GUI:VC++/VC#/LABVIEW;  上面是大致,下面就是重頭戲了,嵌入式軟件開發(fā)編程對(duì)于一個(gè)嵌入式軟件
    發(fā)表于 06-28 11:31

    嵌入式軟件開發(fā)與非嵌入式軟件開發(fā)的區(qū)別?

    嵌入式軟件開發(fā)與非嵌入式軟件開發(fā)區(qū)別?設(shè)備驅(qū)動(dòng)開發(fā)與裸機(jī)驅(qū)動(dòng)開發(fā)區(qū)別?
    發(fā)表于 04-02 06:29

    想知道嵌入式軟件開發(fā)編程學(xué)的是什么??

      想知道嵌入式軟件開發(fā)編程學(xué)的是什么?我們得先知道什么是嵌入式開發(fā),今天就來整理整理嵌入式工程師培訓(xùn)技能。  一般來說它負(fù)責(zé)上層應(yīng)用
    發(fā)表于 11-08 08:15

    嵌入式軟件開發(fā)是做什么的?

    :Linux/QNX+ARM匯編; (5)GUI:VC++/VC#/LABVIEW; 上面是大致,下面就是重頭戲了,嵌入式軟件開發(fā)編程對(duì)于一個(gè)嵌入式
    發(fā)表于 12-15 16:39

    什么是嵌入式軟件開發(fā)

    嵌入式軟件開發(fā)又是指什么?   隨著嵌入式軟件系統(tǒng)結(jié)構(gòu)越來越復(fù)雜,嵌入式軟件
    發(fā)表于 04-20 08:43 ?8721次閱讀

    嵌入式軟件開發(fā)與Embedded-GIS

    1.嵌入式軟件開發(fā) 市場(chǎng)現(xiàn)狀 嵌入式操作系統(tǒng) 嵌入式軟件開發(fā)特點(diǎn) 嵌入式
    發(fā)表于 02-28 10:39 ?36次下載

    ARM嵌入式軟件開發(fā)

    ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)
    發(fā)表于 01-15 17:29 ?64次下載

    嵌入式軟件開發(fā)的優(yōu)勢(shì)分析

    為什么當(dāng)今嵌入式行業(yè)會(huì)如此受歡迎呢?我們從事嵌入式軟件開發(fā)有什么好處嗎?小編就來說說我的看法吧,嵌入式軟件開發(fā)的優(yōu)勢(shì)我們可以從幾點(diǎn)來看。
    的頭像 發(fā)表于 12-21 15:23 ?5162次閱讀

    嵌入式軟件開發(fā)編程規(guī)范及原則

    編程規(guī)范也就是編寫出簡(jiǎn)潔、可維護(hù)、可靠、可測(cè)試、高效、可移植的代碼,提高產(chǎn)品代碼的質(zhì)量。本文針對(duì)嵌入式,主要結(jié)合C語言編程的規(guī)范給大家講述。
    的頭像 發(fā)表于 10-05 10:02 ?6632次閱讀

    嵌入式軟件開發(fā)編程規(guī)范介紹

    對(duì)于嵌入式系統(tǒng)來講,嵌入式軟件相當(dāng)于嵌入式系統(tǒng)的靈魂,整個(gè)嵌入式系統(tǒng)如何工作,都是由嵌入式
    的頭像 發(fā)表于 01-01 09:28 ?4286次閱讀

    嵌入式工程師培訓(xùn)技能 嵌入式開發(fā)學(xué)什么?

      想知道嵌入式軟件開發(fā)編程學(xué)的是什么?我們得先知道什么是嵌入式開發(fā),今天就來整理整理嵌入式工程師培訓(xùn)技能。  一般來說它負(fù)責(zé)上層應(yīng)用
    發(fā)表于 11-02 20:51 ?13次下載
    <b class='flag-5'>嵌入式</b>工程師培訓(xùn)技能  <b class='flag-5'>嵌入式開發(fā)</b>學(xué)什么?

    嵌入式軟件開發(fā)----編程思想

    被斷電。(2)在編程中,如果用到經(jīng)常需要被修改的定值時(shí),需要用宏定義,即為了方便修改,也為了方便他人閱讀。(3)在需要成塊狀存儲(chǔ)不同類型的數(shù)據(jù)時(shí),struct是個(gè)非常好的選擇。(4)所有的配...
    發(fā)表于 11-03 09:06 ?14次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>----<b class='flag-5'>編程</b>思想

    嵌入式軟件開發(fā)做什么?嵌入式開發(fā)培訓(xùn)學(xué)哪些

    嵌入式行業(yè)可以說從幕后走到前臺(tái),大家對(duì)他都很熟悉了,我國(guó)嵌入式人才缺口每年在50萬左右,相關(guān)調(diào)查報(bào)告稱嵌入式軟件開發(fā)是未來幾年最熱門和最受歡迎的職業(yè)之一。但是還有很多人不知道
    發(fā)表于 11-03 10:36 ?19次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>做什么?<b class='flag-5'>嵌入式開發(fā)</b>培訓(xùn)學(xué)哪些

    嵌入式軟件開發(fā)軟件開發(fā)的區(qū)別

    嵌入式軟件開發(fā)軟件開發(fā)是兩個(gè)不同的概念,它們?cè)谝恍╆P(guān)鍵方面有著明顯的區(qū)別。嵌入式軟件開發(fā)是指開發(fā)
    的頭像 發(fā)表于 01-22 15:27 ?2052次閱讀