女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

淺談項(xiàng)目中的程序設(shè)計(jì)思路與步驟

玩轉(zhuǎn)單片機(jī)與嵌入式 ? 來(lái)源:玩轉(zhuǎn)單片機(jī)與嵌入式 ? 2023-09-04 10:48 ? 次閱讀

對(duì)于一個(gè)沒有太多程序設(shè)計(jì)經(jīng)驗(yàn)的萌新工程師來(lái)說(shuō),如何有規(guī)劃有條理的進(jìn)行程序設(shè)計(jì),是一個(gè)很值得學(xué)習(xí)的課題。在本文中,作者結(jié)合自身的經(jīng)驗(yàn),淺要的談一談項(xiàng)目中的程序設(shè)計(jì)思路與步驟。

我們平時(shí)在學(xué)習(xí)開發(fā)板、示例程序或者demo的時(shí)候,會(huì)發(fā)現(xiàn)這種程序設(shè)計(jì)都是單一的外設(shè)或者功能,功能實(shí)現(xiàn)就算演示成功。但是在實(shí)際的項(xiàng)目設(shè)計(jì)過(guò)程中,往往需要設(shè)計(jì)的程序是非常龐大且復(fù)雜的,項(xiàng)目的功能和項(xiàng)目需求可能會(huì)超級(jí)多。此時(shí)在程序設(shè)計(jì)中,既要使MCU同時(shí)兼顧各個(gè)外設(shè)而不發(fā)生沖突,又要合理的設(shè)計(jì)程序構(gòu)架,使所有的需求都能邏輯清晰的實(shí)現(xiàn)相關(guān)功能。

所以程序設(shè)計(jì)一定要有思路。當(dāng)我們拿到一份項(xiàng)目需求的時(shí)候,不能一上來(lái)就敲代碼,最后隨跳躍的思維寫出來(lái)的程序邏輯把自己都繞暈了還沒能實(shí)現(xiàn)所有功能。就像蓋高樓前一定要有圖紙一樣,在進(jìn)行程序設(shè)計(jì)前也要有程序構(gòu)架。

程序框架與底層無(wú)關(guān),它重在整體需求的實(shí)現(xiàn)與邏輯關(guān)系。例如我們把一個(gè)具體的項(xiàng)目需求細(xì)化為10個(gè)具體的任務(wù),每個(gè)任務(wù)都完成一些特定的功能。先忽略每個(gè)任務(wù)里的內(nèi)容,這10個(gè)任務(wù)和它們之間的切換邏輯就組成了此項(xiàng)目的程序構(gòu)架。

有了程序設(shè)計(jì)構(gòu)架,接下來(lái)就是實(shí)現(xiàn)每一個(gè)任務(wù)具體的功能,不同的部分分模塊編寫,例如外設(shè)單獨(dú)寫一個(gè)文件,傳感器驅(qū)動(dòng)單獨(dú)列一個(gè)文件,所有文件之間相互獨(dú)立,這樣不僅思路清晰,且在排查問題的時(shí)候,能直接屏蔽某一個(gè)文件,更快速的定位問題所在。

有了思路之后,接下來(lái)我們談一談具體的設(shè)計(jì)步驟。假設(shè)此時(shí)我們拿到了一個(gè)具體的項(xiàng)目需求書。

1 項(xiàng)目規(guī)劃

首先把需求拆分,分為一個(gè)個(gè)任務(wù),每一個(gè)任務(wù)去實(shí)現(xiàn)相應(yīng)的部分功能,設(shè)計(jì)好任務(wù)之間的切換條件。此時(shí)暫且不考慮底層,只是列出所有任務(wù)和任務(wù)之間的邏輯切換關(guān)系,這樣就有了程序構(gòu)架,然后再規(guī)劃每個(gè)任務(wù)里面里面需要多少具體功能,列出來(lái)一個(gè)表,或者寫成空函數(shù)先放著。列完每個(gè)任務(wù)的具體功能之后,我們?cè)倩仡^看需求書,是否所有功能都實(shí)現(xiàn),且它們之間的切換關(guān)系邏輯都很清晰。

2 功能模塊化

第一步完成之后,整體的系統(tǒng)構(gòu)架和邏輯關(guān)系就一清二楚了,接下來(lái)我們按照第一步中列的每個(gè)任務(wù)的功能表,去完成具體功能實(shí)現(xiàn)。此時(shí),還不急著敲代碼,繼續(xù)規(guī)劃。我們知道,對(duì)于MCU來(lái)講,通常所有的功能最終是要通過(guò)調(diào)用底層實(shí)現(xiàn)。所以接下來(lái)我們要規(guī)劃需要多少底層的資源,根據(jù)第一條中任務(wù)具體的功能列表,我們列一個(gè)底層驅(qū)動(dòng)表。例如功能需要使用UART,SPI等這些外設(shè)資源,所有外設(shè)資源列成一個(gè)外設(shè)表,表中是所有需要使用的外設(shè)資源。如果還需要其他驅(qū)動(dòng),例如傳感器、LCD、FLASH等,所有器件列一個(gè)器件驅(qū)動(dòng)表。

3 編寫外設(shè)驅(qū)動(dòng)

有了第一步和第二步從上向下的規(guī)劃,此時(shí)我們應(yīng)該已經(jīng)很清楚這個(gè)項(xiàng)目需求書如何變成代碼實(shí)現(xiàn)。此時(shí),開始編寫程序,從下向上,逐層編寫。

首先要根據(jù)外設(shè)表編寫每個(gè)外設(shè)對(duì)應(yīng)的驅(qū)動(dòng),每個(gè)外設(shè)驅(qū)動(dòng)單獨(dú)列一個(gè)文件,編寫好之后驗(yàn)證功能是否正常,這個(gè)步驟跟本文開頭提到的開發(fā)板示例程序類似,很基礎(chǔ)。如果同一個(gè)外設(shè),需要同時(shí)實(shí)現(xiàn)幾路輸出或輸入,例如需要三個(gè)不同的IIC輸出,那就同時(shí)啟動(dòng)三路IIC驗(yàn)證功能是否都正常,每一路之間會(huì)不會(huì)有干擾。

每編寫一個(gè)驅(qū)動(dòng),一定要對(duì)驅(qū)動(dòng)中的每一個(gè)函數(shù)進(jìn)行功能驗(yàn)證。只有底層沒問題,才能往上封裝。

4 編寫器件驅(qū)動(dòng)

因?yàn)槠骷尿?qū)動(dòng)很多都是以外設(shè)驅(qū)動(dòng)為基礎(chǔ)的,所以寫完外設(shè)驅(qū)動(dòng)之后,利用外設(shè)驅(qū)動(dòng)的函數(shù),去實(shí)現(xiàn)器件的驅(qū)動(dòng),例如FLASH,可能是SPI通信的,那么我們首先要寫好SPI驅(qū)動(dòng)文件,然后調(diào)用SPI驅(qū)動(dòng)文件,編寫FLASH驅(qū)動(dòng)文件,完成具體的功能函數(shù),例如FLASH的擦除,讀寫等。

同樣,每一個(gè)編寫的器件驅(qū)動(dòng)都要對(duì)每一個(gè)函數(shù)進(jìn)行測(cè)試。

5 其它驅(qū)動(dòng)的編寫

可能在項(xiàng)目中,還涉及到一些無(wú)關(guān)底層的東西,例如一些加密算法,復(fù)雜的數(shù)據(jù)處理算法,各類通信協(xié)議等。可以把每一類分為一個(gè)模塊,編寫或者移植完之后一定要驗(yàn)證每一個(gè)函數(shù)的功能。

6 實(shí)現(xiàn)任務(wù)里的功能函數(shù)

驅(qū)動(dòng)文件都準(zhǔn)備好了之后,就利用驅(qū)動(dòng)文件,加上必要的數(shù)據(jù)處理,去完成任務(wù)里的每一個(gè)具體的功能函數(shù)。

同樣,每一個(gè)編寫的功能函數(shù)都要進(jìn)行測(cè)試。保證功能正常實(shí)現(xiàn)。

7 任務(wù)測(cè)試

完成步驟6之后,要對(duì)每一個(gè)任務(wù)進(jìn)行測(cè)試,看是否能實(shí)現(xiàn)規(guī)劃中要求的功能。

8 系統(tǒng)測(cè)試

完成步驟7之后,項(xiàng)目基本完工,因?yàn)槊恳粚佣际墙?jīng)過(guò)測(cè)試的,所以整個(gè)系統(tǒng)也不會(huì)有太大問題,但是也可能存在一些例如邏輯或者資源沖突的錯(cuò)誤。此時(shí)按照需求書要求的功能對(duì)整個(gè)系統(tǒng)進(jìn)行反復(fù)測(cè)試,查找可能存在的問題,進(jìn)一步完善程序。

9 注意事項(xiàng)

在整個(gè)設(shè)計(jì)過(guò)程中,還有一些其他的注意事項(xiàng),例如:

如果開了很多中斷,一定要對(duì)每個(gè)中斷設(shè)置優(yōu)先級(jí)。明確哪個(gè)優(yōu)先級(jí)應(yīng)該優(yōu)先處理。

相同優(yōu)先級(jí)下的兩個(gè)中斷,禁止在第一個(gè)中斷中觸發(fā)第二中斷,程序會(huì)卡死。

少用全局變量,系統(tǒng)運(yùn)行時(shí)必要的變量和狀態(tài)可以都放在結(jié)構(gòu)體中。然后只定義一個(gè)結(jié)構(gòu)體變量。

當(dāng)結(jié)構(gòu)體的成員為不同數(shù)據(jù)類型時(shí),成員排序就顯得很重要,優(yōu)化排序會(huì)節(jié)約很多內(nèi)存。

結(jié)構(gòu)體做形參的時(shí)候,為減少棧空間的開支,最好設(shè)置結(jié)構(gòu)體指針類型的形參。

不可以返回指向棧空間的指針。

如果通信接收或者發(fā)送沒有硬件FIFO,可以編寫軟件FIFO,避免丟包。

所有變量要初始化具體數(shù)值,尤其是局部變量。

定義指針類型變量一定要初始化。

只在本文件里使用的函數(shù)或者全局變量,一定要加static。

頭文件中只能聲明,不可以定義。

一定要添加合適的注釋,大部分時(shí)候代碼不知自己看。

使用數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)或者處理數(shù)據(jù),例如結(jié)構(gòu)體、枚舉、鏈表、隊(duì)列等。

看完這些步驟,是不是覺得復(fù)雜項(xiàng)目的程序設(shè)計(jì)原來(lái)也挺簡(jiǎn)單的,那就愉快的開始程序設(shè)計(jì)之路吧。

審核編輯:湯梓紅

聲明:本文內(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)注

    2562

    文章

    52524

    瀏覽量

    763578
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17824

    瀏覽量

    360227
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1662

    瀏覽量

    150964
  • 程序設(shè)計(jì)
    +關(guān)注

    關(guān)注

    3

    文章

    262

    瀏覽量

    30841

原文標(biāo)題:淺談項(xiàng)目中的程序設(shè)計(jì)思路與步驟

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于labview的制動(dòng)特性程序設(shè)計(jì)思路是什么啊 求大神

    基于labview的制動(dòng)特性程序設(shè)計(jì)思路是什么啊 求大神
    發(fā)表于 05-15 18:46

    淺談51系列單片機(jī)嵌入式程序設(shè)計(jì)

    淺談51系列單片機(jī)嵌入式程序設(shè)計(jì):文主要提出了一個(gè)51系列匯編語(yǔ)言通用程序設(shè)計(jì)框架,并對(duì)其作了詳細(xì)的探討.關(guān)鍵字:?jiǎn)纹瑱C(jī);嵌入式;程序設(shè)計(jì);匯編;51系列1 引言
    發(fā)表于 12-03 22:31 ?26次下載

    狀態(tài)機(jī)思路在單片機(jī)程序設(shè)計(jì)中的應(yīng)用

    狀態(tài)機(jī)思路在單片機(jī)程序設(shè)計(jì)中的應(yīng)用 狀態(tài)機(jī)的概念狀態(tài)機(jī)是軟件編程中的一個(gè)重要概念。比這個(gè)概念更重要的是對(duì)它的靈活應(yīng)用。在一個(gè)思路清晰而且高效的程序中,
    發(fā)表于 02-09 11:25 ?1w次閱讀
    狀態(tài)機(jī)<b class='flag-5'>思路</b>在單片機(jī)<b class='flag-5'>程序設(shè)計(jì)</b>中的應(yīng)用

    狀態(tài)機(jī)思路在單片機(jī)程序設(shè)計(jì)中的應(yīng)用

    狀態(tài)機(jī)思路在單片機(jī)程序設(shè)計(jì)中的應(yīng)用 狀態(tài)機(jī)的概念       狀態(tài)機(jī)是軟件編程中的一個(gè)重要概念。比這個(gè)概念更重要的是對(duì)
    發(fā)表于 03-18 15:00 ?1405次閱讀
    狀態(tài)機(jī)<b class='flag-5'>思路</b>在單片機(jī)<b class='flag-5'>程序設(shè)計(jì)</b>中的應(yīng)用

    ARM體系結(jié)構(gòu)與程序設(shè)計(jì)

    《ARM體系結(jié)構(gòu)與程序設(shè)計(jì)》是ARM體系結(jié)構(gòu)與程序設(shè)計(jì)的一本實(shí)用指導(dǎo)書籍,通過(guò)案例詳細(xì)介紹了ARM體系結(jié)構(gòu)與程序設(shè)計(jì),案例中的程序都取自實(shí)際的項(xiàng)目
    發(fā)表于 10-27 16:37 ?2446次閱讀

    循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

    循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的幾種方法,幾種思路,設(shè)計(jì)語(yǔ)言為C語(yǔ)言
    發(fā)表于 12-23 14:35 ?0次下載

    LabVIEW程序設(shè)計(jì)步驟

    【LabVIEW從入門到精通】2.3 LabVIEW程序設(shè)計(jì)步驟
    發(fā)表于 01-08 15:44 ?0次下載

    LabWindowsCVI程序設(shè)計(jì)步驟

    【LabVIEW從入門到精通】3.3 LabWindowsCVI程序設(shè)計(jì)步驟
    發(fā)表于 01-08 15:50 ?0次下載

    【LabVIEW從入門到精通】LabVIEW程序設(shè)計(jì)

    【LabVIEW從入門到精通】2.3 LabVIEW程序設(shè)計(jì)步驟
    發(fā)表于 01-04 09:41 ?0次下載

    由傳統(tǒng)電工圖轉(zhuǎn)換為階梯圖的過(guò)程,淺談程序設(shè)計(jì)

    ,以『三相感應(yīng)電動(dòng)機(jī)故障警報(bào)控制』電路為例,由傳統(tǒng)電工圖轉(zhuǎn)換為階梯圖的過(guò)程,淺談程序設(shè)計(jì),相信爾后對(duì)于相關(guān)的回路轉(zhuǎn)換或程序設(shè)計(jì),您或許可觸類旁通。
    的頭像 發(fā)表于 01-03 16:56 ?5726次閱讀
    由傳統(tǒng)電工圖轉(zhuǎn)換為階梯圖的過(guò)程,<b class='flag-5'>淺談</b><b class='flag-5'>程序設(shè)計(jì)</b>

    dsp28335如何入門:程序設(shè)計(jì)步驟

    本文首先介紹了dsp28335的概念,其次介紹了dsp28335電氣特性及特點(diǎn),最后詳細(xì)闡述了關(guān)于dsp28335的程序設(shè)計(jì)步驟
    發(fā)表于 05-23 17:09 ?2w次閱讀

    面向?qū)ο蟮?b class='flag-5'>程序設(shè)計(jì)總結(jié)與過(guò)程化程序設(shè)計(jì)有什么區(qū)別?

    面向?qū)ο?b class='flag-5'>程序設(shè)計(jì)(簡(jiǎn)稱OOP)技術(shù)最近幾年在計(jì)算機(jī)領(lǐng)域得到了迅猛發(fā)展,它是程序設(shè)計(jì)方法的一場(chǎng)革命。與傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)(面向過(guò)程程序設(shè)計(jì))相比,它具有許多優(yōu)點(diǎn),其中最主要的是,面向?qū)?/div>
    發(fā)表于 09-19 14:12 ?0次下載
    面向?qū)ο蟮?b class='flag-5'>程序設(shè)計(jì)</b>總結(jié)與過(guò)程化<b class='flag-5'>程序設(shè)計(jì)</b>有什么區(qū)別?

    PLC程序設(shè)計(jì)的五個(gè)步驟

    PLC程序設(shè)計(jì)一般分為以下幾個(gè)步驟
    發(fā)表于 05-13 08:51 ?1.1w次閱讀

    PLC編程中程序設(shè)計(jì)步驟

    設(shè)計(jì)plc控制系統(tǒng)時(shí),除了解決輸出部件和輸入部件的連線方式外,最主要的工作是程序設(shè)計(jì)與調(diào)試。通常程序設(shè)計(jì)按如下步驟進(jìn)行。 (1)了解被控系統(tǒng)的工藝過(guò)程和控制要求,并作出流程圖,以描述控制過(guò)程。 (2
    發(fā)表于 12-17 16:17 ?3527次閱讀

    淺談機(jī)場(chǎng)能源管理系統(tǒng)改造項(xiàng)目設(shè)計(jì)思路

    淺談機(jī)場(chǎng)能源管理系統(tǒng)改造項(xiàng)目設(shè)計(jì)思路 馮長(zhǎng)杰 安科瑞電氣股份有限公司 上海嘉定 201801 __【摘要】__針對(duì)國(guó)內(nèi)機(jī)場(chǎng)用能設(shè)備類型多、分布區(qū)域廣、采集設(shè)備數(shù)量大的特點(diǎn),從改造的角度分析了能源管理
    的頭像 發(fā)表于 10-30 16:36 ?896次閱讀
    <b class='flag-5'>淺談</b>機(jī)場(chǎng)能源管理系統(tǒng)改造<b class='flag-5'>項(xiàng)目</b>設(shè)計(jì)<b class='flag-5'>思路</b>