单片机/嵌入式软件架构分层思想
生活随笔
收集整理的這篇文章主要介紹了
单片机/嵌入式软件架构分层思想
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以STM32裸機開發為例。
| 應用層 |
| 驅動層 |
| 硬件層 |
| 固件層 |
①最底層為固件層,Firmware
這一層通常是官方給的庫,庫函數對寄存器進行操作,例如:
②往上一層為硬件層,Hardware。
這一層的函數是在庫函數的基礎上進一步封裝,比如根據STM32 SPI的特性,SPI讀寫一個數據我們封裝為一個函數,例如:
這個函數的也只讀寫送一個數據,我們通常不會只讀寫一個數據,而是連續讀寫送N個數據,所以在這個函數的基礎上再封裝出一個函數,例如:
void SPI2_ReadWriteData(u8 *sendData, u8 *recvData, u32 length) {u32 i = 0;for(i = 0; i < length; i++){recvData[i] = SPI2_ReadWriteByte(sendData[i]);} }③再往上一層是驅動層,drive。
前面兩層都是對STM32進行操作,而這一層是對與STM32連接的元器件、模塊、模組進行操作,通常稱為調試驅動,比如調試STM32和外部FLASH W25Q128的SPI驅動。
這一層的函數通常是對W25Q128進行操作,例如:
④再往上一層是應用層,APP。
有很多人往往在main.c里面做功能應用,導致main.c內容又多又長,main函數又長又臭,大多數公司的代碼規范要求是不允許的。最好把功能應用剝離出來,單獨放在應用層,讓main函數簡潔清晰。
例如:
總結:
用分層思想不僅提高代碼閱讀性(方便新員工接手辭職員工代碼,而不是一團糟讓人一頭霧水),還提高可移植性,如果項目需要換一顆MCU,替換固件層,替換硬件層幾個庫函數即可,其他層不需要動。
總結
以上是生活随笔為你收集整理的单片机/嵌入式软件架构分层思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 串口不通或乱码,排查方法
- 下一篇: visual studio 2019 未