文章目錄
1、GPIO構件封裝方法與規範
建議 |
按底層硬件操作功能封裝構件(給出函數名與接口函數),以供實際編程使用。 |
---|---|
必要性 |
1、利用軟件構件,編程開發效率且程序更規範; 2、將底層驅動封裝成構件,可提高複用性,能更多關注軟件優化與穩定性。 |
優點 |
可移植性、可複用性、方便不同構件間交流 |
構件方法 |
每個構件由(.h)和(.c)兩個獨立文件組成,放在以構件命名的文件夾中。(其中 .h 中僅僅包含了對外接口函數的聲明,相當於使用指南) |
---|---|
構件設計的最基本要求 |
(1)考慮使用與移植方便。 (2)要有統一、規範的編碼風格與註釋。 (3)宏的使用限制。 (4)不使用全局變量。 |
例子:設計底層驅動構件gpio_init,代碼大致如下:
- gpio_init.h
PS:gpio_init.h文件內,還可以放入一些宏定義、相關接口聲明等
- gpio_init.c
2、利用構件方法控制小燈閃爍
構件
|
構件設計函數 |
---|---|
底層驅動設計—GPIO
|
1、GPIO初始化:gpio_init (port pin, GPIO OUTPUT, state) 2、復位GPIO狀態:gpio_set(port pin, state) 3、翻轉GPIO狀態:gpio_reverse (port pin) |
應用構件設計—light |
1、小燈初始化:light_init() 2、設置小燈狀態:light_control() 3、翻轉小燈狀態:light_change() |
我們把調用底層驅動構件設計的面向具體應用的構件,稱爲應用構件。
描述 |
|
---|---|
步驟一、在light.h文件中 |
1、給小燈起名字,並明確與MCU連接引腳,進行宏定義; 2、對小燈亮、暗進行宏定義,方便編程 |
步驟二、在light.c文件中 |
寫好以下三個函數: void light_init(uint 16 port pin, uint 8 state) void light_control(uint 16 port pin, uint 8 state) void light_change (uint_16 port pin) |
步驟三、在main.c文件中 |
1、在main函數中初始化LED燈的初始狀態;
2、在功能函數中控制小燈狀態發生變化
|
3、工程文件組織框架與第一個C語言工程分析
嵌入式系統工程包含若干文件,包括程序文件、頭文件、與編譯調試相關的文件、工程說明文件、開發環境生成文件等,而合理組織這些文件,規範工程組織,可以提高項目的開發效率、提高閱讀清晰度、提高可維護性、降低維護難度。該工程框架也可被稱爲軟件最小系統框架,因爲它包含的工程的最基本要素。
文件夾名 |
功能與特點 |
|
---|---|---|
文檔文件夾 |
Doc |
工程改動時,及時記錄。 |
CPU文件夾 |
CPU |
與內核相關的文件。 |
MCU文件夾 |
MCU (Linker File、MCU drivers、Startup) |
鏈接文件夾,存放鏈接文件。 |
用戶板文件夾 |
UserBoard |
MCU底層構件文件夾,存放芯片級硬件驅動。啓動文件夾。存放芯片頭文件及芯片初始化文件用戶板文件夾,存放應用級硬件驅動,即應用構件。 |
軟件構件文件夾 |
SoftComponent |
抽象軟件構件文件夾,存放硬件不直接相關的軟件構件。 |
無操作系統源程序文件夾 |
NosPrg |
爲了便於過渡到實時操作系統RTOS工程結構,特命名該文件夾。含主程序文件、中斷服務例程文件等。這些文件是實際應用級併發人員進行編程的主要對象。 |
從源代碼到最後的可執行文件,可認爲需經過編譯、彙編和鏈接三個過程 。
每個源代碼文件在編譯和彙編後都會生成一個可重定位的目標文件,而鏈接器可以將這些中間文件組合成最終的可執行目標文件 。