【嵌入式系統—GPIO應用編程】構件設計與實現

文章目錄

1、GPIO構件封裝方法與規範

2、利用構件方法控制小燈閃爍

3、工程文件組織框架與第一個C語言工程分析


1、GPIO構件封裝方法與規範

構件封裝建議、必要性與優點
建議

按底層硬件操作功能封裝構件(給出函數名與接口函數),以供實際編程使用。

必要性

1、利用軟件構件,編程開發效率且程序更規範;

2、將底層驅動封裝成構件,可提高複用性,能更多關注軟件優化與穩定性。

優點

可移植性、可複用性、方便不同構件間交流

 

構件封裝的規範
構件方法

每個構件由(.h)和(.c)兩個獨立文件組成,放在以構件命名的文件夾中。(其中 .h 中僅僅包含了對外接口函數的聲明,相當於使用指南)

構件設計的最基本要求

(1)考慮使用與移植方便。

(2)要有統一、規範的編碼風格與註釋。

(3)宏的使用限制。

(4)不使用全局變量。

例子:設計底層驅動構件gpio_init,代碼大致如下:

  • gpio_init.h

PS:gpio_init.h文件內,還可以放入一些宏定義、相關接口聲明等

  • gpio_init.c

 

2、利用構件方法控制小燈閃爍

實現led的大致原理圖

 

構件

 

構件設計函數

底層驅動設計—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燈的初始狀態;

 

light_init(LIGHT GREEN,LIGHT ON); //綠燈初始化

2、在功能函數中控制小燈狀態發生變化

light_change(LIGHT GREEN); //翻轉綠燈的亮滅狀態
light_control(LIGHT GREEN,LIGHT OFF); //綠燈暗


3、工程文件組織框架與第一個C語言工程分析

嵌入式系統工程包含若干文件,包括程序文件、頭文件、與編譯調試相關的文件、工程說明文件、開發環境生成文件等,而合理組織這些文件,規範工程組織,可以提高項目的開發效率、提高閱讀清晰度、提高可維護性、降低維護難度。該工程框架也可被稱爲軟件最小系統框架,因爲它包含的工程的最基本要素。

 

文件夾名

功能與特點

文檔文件夾

Doc

工程改動時,及時記錄。

CPU文件夾

CPU

與內核相關的文件。

MCU文件夾

MCU

(Linker File、MCU drivers、Startup)

鏈接文件夾,存放鏈接文件。

用戶板文件夾

UserBoard

MCU底層構件文件夾,存放芯片級硬件驅動。啓動文件夾。存放芯片頭文件及芯片初始化文件用戶板文件夾,存放應用級硬件驅動,即應用構件。

軟件構件文件夾

SoftComponent

抽象軟件構件文件夾,存放硬件不直接相關的軟件構件。

無操作系統源程序文件夾

NosPrg

爲了便於過渡到實時操作系統RTOS工程結構,特命名該文件夾。含主程序文件、中斷服務例程文件等。這些文件是實際應用級併發人員進行編程的主要對象。

 

 

從源代碼到最後的可執行文件,可認爲需經過編譯、彙編和鏈接三個過程 。

每個源代碼文件在編譯和彙編後都會生成一個可重定位的目標文件,而鏈接器可以將這些中間文件組合成最終的可執行目標文件 。

C編譯過程

 

 

main函數之前的執行過程

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章