第一章 MCU項目框架搭建
搭建框架是一個工程師必備技能,拿到開發需求時,就要開始規劃,項目開發分為幾個模塊,每個模塊做什麼,就像你寫論文一樣,先把整體框架理順,再往裏面填東西。
模塊化編程就是將硬件、驅動、業務等分開,獨立編程不相互影響,不斷的將項目和平時應用中的模塊積累下來,優化封裝,以後在項目裏就像是給車選配件,有了框架,你只需要從自己的庫裏面去挑零件去組裝,把重心放在業務邏輯上面。
總得來説學會框架搭建和模塊化編程可以讓自己在項目裏事半功倍,提升開發效率,接下來以我的框架為例,給同學們介紹。
框架目錄
- project:工程目錄,軟件(Keil)生成的配置文件,不需要我們編輯,不屬於代碼層次
- startup:芯片核心和配置文件
- lib:庫文件,HAL庫,標準庫文件
- bsp:外設驅動封裝,庫文件的基礎上做的二次封裝
- driver:外部的器件的控制驅動,比如温濕度傳感器驅動,4G模塊驅動等
- module:軟件模塊,主要包含一些軟件算法模塊,常用的工具如時間轉換、校驗、json、隊列等
- device:這裏會對使用到的所有芯片外設進行集中初始化,並對外提供控制接口
- conf:配置讀寫和初始化,對整個系統的配置,讀寫保存操作,也對外提供接口,用於保存和讀取參數
- OS:操作系統源碼或者任務輪詢源碼(操作系統源碼可通過pack包導入,不需要下載源碼)
- app:應用層,主要是實現每個模塊的業務功能,調用硬件和驅動,對外提供接口
- main:主函數入口,硬件、參數初始化,任務線程創建
- business:整業務流程協調,主要是對app的各個業務整合交互協調
整個系統調用流程如下,層次分明
這裏我的BSP相當於對庫文件做的二次封裝,為啥這麼做,可以去看下源碼;當然,BSP可以根據項目選擇是否存在必要,例如輕量級項目,或者實時性要求很高的,可以去掉BSP層,在device或者conf直接調用庫或者寄存器,再對外提供接口。
框架選擇
我這裏基於兩種不同的系統做的框架:
- 基於RTThread操作系統的框架
- 基於簡單任務輪詢的框架
這裏兩種框架供大家在不同的場景下選擇,例如在RAM和ROM空間有限的情況下,優先選擇任務輪詢框架。輕量簡單的項目採用輪詢,大型項目採用RTThread