色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

淺談項目中的程序設計思路與步驟

玩轉單片機與嵌入式 ? 來源:玩轉單片機與嵌入式 ? 2023-09-04 10:48 ? 次閱讀

對于一個沒有太多程序設計經驗的萌新工程師來說,如何有規劃有條理的進行程序設計,是一個很值得學習的課題。在本文中,作者結合自身的經驗,淺要的談一談項目中的程序設計思路與步驟。

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

所以程序設計一定要有思路。當我們拿到一份項目需求的時候,不能一上來就敲代碼,最后隨跳躍的思維寫出來的程序邏輯把自己都繞暈了還沒能實現所有功能。就像蓋高樓前一定要有圖紙一樣,在進行程序設計前也要有程序構架。

程序框架與底層無關,它重在整體需求的實現與邏輯關系。例如我們把一個具體的項目需求細化為10個具體的任務,每個任務都完成一些特定的功能。先忽略每個任務里的內容,這10個任務和它們之間的切換邏輯就組成了此項目的程序構架。

有了程序設計構架,接下來就是實現每一個任務具體的功能,不同的部分分模塊編寫,例如外設單獨寫一個文件,傳感器驅動單獨列一個文件,所有文件之間相互獨立,這樣不僅思路清晰,且在排查問題的時候,能直接屏蔽某一個文件,更快速的定位問題所在。

有了思路之后,接下來我們談一談具體的設計步驟。假設此時我們拿到了一個具體的項目需求書。

1 項目規劃

首先把需求拆分,分為一個個任務,每一個任務去實現相應的部分功能,設計好任務之間的切換條件。此時暫且不考慮底層,只是列出所有任務和任務之間的邏輯切換關系,這樣就有了程序構架,然后再規劃每個任務里面里面需要多少具體功能,列出來一個表,或者寫成空函數先放著。列完每個任務的具體功能之后,我們再回頭看需求書,是否所有功能都實現,且它們之間的切換關系邏輯都很清晰。

2 功能模塊化

第一步完成之后,整體的系統構架和邏輯關系就一清二楚了,接下來我們按照第一步中列的每個任務的功能表,去完成具體功能實現。此時,還不急著敲代碼,繼續規劃。我們知道,對于MCU來講,通常所有的功能最終是要通過調用底層實現。所以接下來我們要規劃需要多少底層的資源,根據第一條中任務具體的功能列表,我們列一個底層驅動表。例如功能需要使用UART,SPI等這些外設資源,所有外設資源列成一個外設表,表中是所有需要使用的外設資源。如果還需要其他驅動,例如傳感器、LCD、FLASH等,所有器件列一個器件驅動表。

3 編寫外設驅動

有了第一步和第二步從上向下的規劃,此時我們應該已經很清楚這個項目需求書如何變成代碼實現。此時,開始編寫程序,從下向上,逐層編寫。

首先要根據外設表編寫每個外設對應的驅動,每個外設驅動單獨列一個文件,編寫好之后驗證功能是否正常,這個步驟跟本文開頭提到的開發板示例程序類似,很基礎。如果同一個外設,需要同時實現幾路輸出或輸入,例如需要三個不同的IIC輸出,那就同時啟動三路IIC驗證功能是否都正常,每一路之間會不會有干擾。

每編寫一個驅動,一定要對驅動中的每一個函數進行功能驗證。只有底層沒問題,才能往上封裝。

4 編寫器件驅動

因為器件的驅動很多都是以外設驅動為基礎的,所以寫完外設驅動之后,利用外設驅動的函數,去實現器件的驅動,例如FLASH,可能是SPI通信的,那么我們首先要寫好SPI驅動文件,然后調用SPI驅動文件,編寫FLASH驅動文件,完成具體的功能函數,例如FLASH的擦除,讀寫等。

同樣,每一個編寫的器件驅動都要對每一個函數進行測試。

5 其它驅動的編寫

可能在項目中,還涉及到一些無關底層的東西,例如一些加密算法,復雜的數據處理算法,各類通信協議等??梢园衙恳活惙譃橐粋€模塊,編寫或者移植完之后一定要驗證每一個函數的功能。

6 實現任務里的功能函數

驅動文件都準備好了之后,就利用驅動文件,加上必要的數據處理,去完成任務里的每一個具體的功能函數。

同樣,每一個編寫的功能函數都要進行測試。保證功能正常實現。

7 任務測試

完成步驟6之后,要對每一個任務進行測試,看是否能實現規劃中要求的功能。

8 系統測試

完成步驟7之后,項目基本完工,因為每一層都是經過測試的,所以整個系統也不會有太大問題,但是也可能存在一些例如邏輯或者資源沖突的錯誤。此時按照需求書要求的功能對整個系統進行反復測試,查找可能存在的問題,進一步完善程序。

9 注意事項

在整個設計過程中,還有一些其他的注意事項,例如:

如果開了很多中斷,一定要對每個中斷設置優先級。明確哪個優先級應該優先處理。

相同優先級下的兩個中斷,禁止在第一個中斷中觸發第二中斷,程序會卡死。

少用全局變量,系統運行時必要的變量和狀態可以都放在結構體中。然后只定義一個結構體變量。

當結構體的成員為不同數據類型時,成員排序就顯得很重要,優化排序會節約很多內存。

結構體做形參的時候,為減少棧空間的開支,最好設置結構體指針類型的形參。

不可以返回指向??臻g的指針。

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

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

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

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

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

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

使用數據結構存儲或者處理數據,例如結構體、枚舉、鏈表、隊列等。

看完這些步驟,是不是覺得復雜項目的程序設計原來也挺簡單的,那就愉快的開始程序設計之路吧。

審核編輯:湯梓紅

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

    關注

    2564

    文章

    52722

    瀏覽量

    764669
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17893

    瀏覽量

    361787
  • FlaSh
    +關注

    關注

    10

    文章

    1672

    瀏覽量

    151177
  • 程序設計
    +關注

    關注

    3

    文章

    262

    瀏覽量

    30899

原文標題:淺談項目中的程序設計思路與步驟

文章出處:【微信號:玩轉單片機與嵌入式,微信公眾號:玩轉單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
  • jf_191533531

評論

相關推薦
熱點推薦

基于labview的制動特性程序設計思路是什么啊 求大神

基于labview的制動特性程序設計思路是什么啊 求大神
發表于 05-15 18:46

淺談51系列單片機嵌入式程序設計

淺談51系列單片機嵌入式程序設計:文主要提出了一個51系列匯編語言通用程序設計框架,并對其作了詳細的探討.關鍵字:單片機;嵌入式;程序設計;匯編;51系列1 引言
發表于 12-03 22:31 ?26次下載

實用程序設計

程序設計就是用計算機所能接受的語言把解決問題的步驟描述出來,也就是編制計算機的程序。AVR單片機程序設計語言有C編譯高級語言和宏匯編匯編語言。在設計應用系統時軟件
發表于 07-01 09:58 ?31次下載

狀態機思路在單片機程序設計中的應用

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

狀態機思路在單片機程序設計中的應用

狀態機思路在單片機程序設計中的應用 狀態機的概念       狀態機是軟件編程中的一個重要概念。比這個概念更重要的是對
發表于 03-18 15:00 ?1423次閱讀
狀態機<b class='flag-5'>思路</b>在單片機<b class='flag-5'>程序設計</b>中的應用

ARM體系結構與程序設計

《ARM體系結構與程序設計》是ARM體系結構與程序設計的一本實用指導書籍,通過案例詳細介紹了ARM體系結構與程序設計,案例中的程序都取自實際的項目
發表于 10-27 16:37 ?2452次閱讀

循環結構程序設計

循環結構程序設計的幾種方法,幾種思路,設計語言為C語言
發表于 12-23 14:35 ?0次下載

LabVIEW程序設計步驟

【LabVIEW從入門到精通】2.3 LabVIEW程序設計步驟
發表于 01-08 15:44 ?0次下載

LabWindowsCVI程序設計步驟

【LabVIEW從入門到精通】3.3 LabWindowsCVI程序設計步驟
發表于 01-08 15:50 ?0次下載

由傳統電工圖轉換為階梯圖的過程,淺談程序設計

,以『三相感應電動機故障警報控制』電路為例,由傳統電工圖轉換為階梯圖的過程,淺談程序設計,相信爾后對于相關的回路轉換或程序設計,您或許可觸類旁通。
的頭像 發表于 01-03 16:56 ?5759次閱讀
由傳統電工圖轉換為階梯圖的過程,<b class='flag-5'>淺談</b><b class='flag-5'>程序設計</b>

dsp28335如何入門:程序設計步驟

本文首先介紹了dsp28335的概念,其次介紹了dsp28335電氣特性及特點,最后詳細闡述了關于dsp28335的程序設計步驟
發表于 05-23 17:09 ?2w次閱讀

面向對象的程序設計總結與過程化程序設計有什么區別?

面向對象程序設計(簡稱OOP)技術最近幾年在計算機領域得到了迅猛發展,它是程序設計方法的一場革命。與傳統的結構化程序設計(面向過程程序設計)相比,它具有許多優點,其中最主要的是,面向對
發表于 09-19 14:12 ?0次下載
面向對象的<b class='flag-5'>程序設計</b>總結與過程化<b class='flag-5'>程序設計</b>有什么區別?

PLC程序設計的五個步驟

PLC程序設計一般分為以下幾個步驟
發表于 05-13 08:51 ?1.1w次閱讀

PLC編程中程序設計步驟

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

淺談機場能源管理系統改造項目設計思路

淺談機場能源管理系統改造項目設計思路 馮長杰 安科瑞電氣股份有限公司 上海嘉定 201801 __【摘要】__針對國內機場用能設備類型多、分布區域廣、采集設備數量大的特點,從改造的角度分析了能源管理
的頭像 發表于 10-30 16:36 ?919次閱讀
<b class='flag-5'>淺談</b>機場能源管理系統改造<b class='flag-5'>項目</b>設計<b class='flag-5'>思路</b>
主站蜘蛛池模板: 麻豆国产人妻精品无码AV | 日本高清免费看 | 久久精品麻豆国产天美传媒果冻 | 国产精品第八页 | fryee性欧美18 19 | 亚洲精品综合在线影院 | 成人国产在线看不卡 | md2.pud 麻豆传媒官网 | 久久在精品线影院精品国产 | 免费看男人J放进女人J无遮掩 | 国产午夜精AV在线麻豆 | 国产精品久久自在自2021 | 免费精品美女久久久久久久久 | 中文字幕绝色少妇性 | caoporm国产精品视频免费 | 1973性农场未删减版 | 少爷不要别揉了高H | 四虎永久在线精品免费A | 久久麻豆亚洲AV成人无码国产 | 亚洲精品无码AV中文字幕蜜桃 | 久久精品熟女亚洲AV国产 | 国产Av影片麻豆精品传媒 | 久久婷婷丁香五月色综合啪免费 | 国产精品亚洲精品日韩电影 | 国产精品青青在线麻豆 | 超碰视频在线 | 亚洲中文字幕日产乱码2020 | 娇妻让壮男弄的流白浆 | 年轻的母亲4线在线观看完整 | 中文无码有码亚洲 欧美 | 丝袜美女自摸 | 夜月视频直播免费观看 | 欧美亚洲国产激情一区二区 | 最近中文字幕MV免费高清在线 | 亚洲综合春色另类久久 | 亚洲色欲色欲WWW在线成人网 | 日本一本在线播放 | 国产精品免费观看视频 | 亚洲高清在线天堂精品 | 丫鬟粗大狠狠贯穿h | 91桃色污无限免费看 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品