第一個樣例程序及工程組織_第1頁
第一個樣例程序及工程組織_第2頁
第一個樣例程序及工程組織_第3頁
第一個樣例程序及工程組織_第4頁
第一個樣例程序及工程組織_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、目的要求:目的要求: 1.1.了解了解通用通用I/O基本概念及連接方法、底層驅(qū)動基本概念及連接方法、底層驅(qū)動 含義及編程方法、含義及編程方法、CodeWarrior10.3開發(fā)環(huán)境;開發(fā)環(huán)境; 2.2.理解理解KL25的端口控制模塊與的端口控制模塊與GPIO模塊的編程模塊的編程 結(jié)構(gòu)、直接給映像寄存器地址賦值的方法;結(jié)構(gòu)、直接給映像寄存器地址賦值的方法; 3.3.掌握掌握構(gòu)件化編程框架、構(gòu)件化編程框架、GPIO構(gòu)件和構(gòu)件和Light構(gòu)件構(gòu)件 編程方法及工程測試方法、文件組織與分析、編程方法及工程測試方法、文件組織與分析、 上電執(zhí)行過程。上電執(zhí)行過程。 第第4章章 第一個樣例程序及工程組織第一個

2、樣例程序及工程組織 嵌入式系統(tǒng)基礎(chǔ)嵌入式系統(tǒng)基礎(chǔ) 第第4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織 4.1 通用通用I/O接口基本概念及連接方法接口基本概念及連接方法 4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)模塊的編程結(jié)構(gòu) 4.3 GPIO驅(qū)動構(gòu)件封裝方式與封裝規(guī)范驅(qū)動構(gòu)件封裝方式與封裝規(guī)范 4.4 第一個第一個C語言工程:控制小燈閃爍語言工程:控制小燈閃爍 4.5 工程文件組織框架與第一個工程文件組織框架與第一個C語言工程分析語言工程分析 4.6 第一個匯編語言工程:控制小燈閃爍第一個匯編語言工程:控制小燈閃爍 一、一、I/O接口的概念接口的概念 p I/O接口

3、,即接口,即輸入輸入/ /輸出輸出(Input/Output)接口,是微接口,是微 控制器同外界進(jìn)行交互的重要通道。這里的接口英文是控制器同外界進(jìn)行交互的重要通道。這里的接口英文是 port,也可以翻譯為,也可以翻譯為“端口端口”;另一個接口的英文是;另一個接口的英文是 interface。 二、通用二、通用I/O的概念的概念 p 通用通用I/O,記為,記為GPIO(General-Purpose I/O),即基),即基 本的輸入本的輸入/輸出,有時也稱并行輸出,有時也稱并行I/O或普通或普通I/O,它是,它是I/O 的最基本形式。的最基本形式。 第第4 4章章 第一個樣例程序及工程組織第一個

4、樣例程序及工程組織 4.1 通用通用I/O接口基本概念及連接方法接口基本概念及連接方法 二、通用二、通用I/O的概念的概念 p 大多數(shù)大多數(shù)GPIO引腳可以通過引腳可以通過編程編程來設(shè)定其工作來設(shè)定其工作 方式為方式為輸入輸入或或輸出輸出,稱之為,稱之為雙向雙向I/O。 p GPIO接口一般應(yīng)具備:接口一般應(yīng)具備: 放置放置輸入或輸出控制字輸入或輸出控制字的寄存器的寄存器 放置放置工作方式控制字工作方式控制字的寄存器的寄存器 放置放置要交換數(shù)據(jù)要交換數(shù)據(jù)的寄存器的寄存器 放置反映放置反映工作狀態(tài)工作狀態(tài)的寄存器的寄存器 4.1 通用通用I/O接口基本概念及連接方法接口基本概念及連接方法 三、輸

5、入引腳的基本接法三、輸入引腳的基本接法 若若MCU的某個引腳通過的某個引腳通過 一個電阻接到一個電阻接到電源電源(Vcc) 上,這個電阻被稱為上,這個電阻被稱為“上上 拉電阻拉電阻”。 若若MCU的某個引腳通過的某個引腳通過 一個電阻接到一個電阻接到地地(GND) 上,則相應(yīng)的電阻被稱為上,則相應(yīng)的電阻被稱為 “下拉電阻下拉電阻”。 懸空懸空的芯片引腳被上拉的芯片引腳被上拉 電阻或下拉電阻初始化為電阻或下拉電阻初始化為 高電平或低電平。高電平或低電平。 4.1 通用通用I/O接口基本概念及連接方法接口基本概念及連接方法 u作為通用輸入引腳,是作為通用輸入引腳,是通通 過該引腳向過該引腳向MCU

6、內(nèi)部輸入內(nèi)部輸入 高電平或低電平高電平或低電平來驅(qū)動器來驅(qū)動器 件工作。件工作。 三、輸入引腳的基本接法三、輸入引腳的基本接法 四、輸出引腳的基本接法四、輸出引腳的基本接法 u作為通用輸出引腳,作為通用輸出引腳,MCU內(nèi)部內(nèi)部 程序向該引腳輸出高電平或低程序向該引腳輸出高電平或低 電平電平來驅(qū)動器件工作。來驅(qū)動器件工作。 u右圖中:右圖中: 1)O1引腳是發(fā)光二極管引腳是發(fā)光二極管LED的驅(qū)的驅(qū) 動引腳:當(dāng)動引腳:當(dāng)O1引腳輸出高電平引腳輸出高電平 時,時,LED不亮;當(dāng)不亮;當(dāng)O1引腳輸出引腳輸出 低電平時,低電平時,LED點(diǎn)亮。點(diǎn)亮。 2)O2引腳接蜂鳴器驅(qū)動電路:當(dāng)引腳接蜂鳴器驅(qū)動電路:

7、當(dāng) O2腳輸出高電平時,蜂鳴器響;腳輸出高電平時,蜂鳴器響; O2腳輸出低電平時,蜂鳴器不腳輸出低電平時,蜂鳴器不 響。響。 4.1 通用通用I/O接口基本概念及連接方法接口基本概念及連接方法 一、端口控制模塊(一、端口控制模塊(KL25參考參考手冊手冊: 第第11章章) uKL25的大部分引腳具有復(fù)用功能,可以通過端口控制的大部分引腳具有復(fù)用功能,可以通過端口控制 模塊模塊(Port control and interrupts,PORT)提供的)提供的寄寄 存器編程存器編程指定其為某一具體功能。指定其為某一具體功能。 uPORT模塊內(nèi)含模塊內(nèi)含3類寄存器:類寄存器:引腳控制寄存器引腳控制寄

8、存器(Pin Control Register, PCR),),全局引腳控制寄存器全局引腳控制寄存器 (Global Pin Control Register, GPCR)、)、中斷狀態(tài)標(biāo)中斷狀態(tài)標(biāo) 志寄存器志寄存器(Interrupt Status Flag Register, ISFR)。)。 u每個寄存器都是每個寄存器都是32位位的。的。 4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)模塊的編程結(jié)構(gòu) 第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織 1、寄存器映像地址寄存器映像地址( KL25參考參考手冊手冊: P177-182) 一、端口控制模塊一、端口控制

9、模塊 1、寄存器映像地址、寄存器映像地址 1、寄存器映像地址、寄存器映像地址 1、寄存器映像地址、寄存器映像地址 1、寄存器映像地址、寄存器映像地址 1、寄存器映像地址、寄存器映像地址 1、寄存器映像地址、寄存器映像地址 1、寄存器映像地址、寄存器映像地址 pKL25芯片有芯片有5個端口個端口AE,每個端口有:,每個端口有: l32個個引腳控制寄存器引腳控制寄存器 PORTx_PCRn (其中(其中x=AE,n=031) l2個個全局引腳控制寄存器全局引腳控制寄存器 PORTx_GPCLR、PORTx_GPCHR l1個個中斷狀態(tài)標(biāo)志寄存器中斷狀態(tài)標(biāo)志寄存器 PORTx_ISFR (1)引腳控

10、制寄存器引腳控制寄存器 p端口端口x的基地址的基地址=4004_9000+x*1000(x=AE,對應(yīng)對應(yīng) 04)。)。 p端口端口x的每個引腳控制寄存器的每個引腳控制寄存器PORTx_PCRn的地址的地址 =4004_9000+x*1000+n*4(x=AE,n=031)。 1、寄存器映像地址、寄存器映像地址 略去十六進(jìn)制前綴略去十六進(jìn)制前綴0 x (2)全局引腳控制寄存器全局引腳控制寄存器 p全局引腳控制寄存器(低)全局引腳控制寄存器(低)PORTx_GPCLR的地址的地址 =4004_9080+x*1000 (x=AE,對應(yīng),對應(yīng)04) p全局引腳控制寄存器(高)全局引腳控制寄存器(高)

11、PORTx_GPCHR的地址的地址 =4004_9084+x*1000 (x=AE,對應(yīng),對應(yīng)04) (3)中斷狀態(tài)標(biāo)志寄存器中斷狀態(tài)標(biāo)志寄存器 p中斷狀態(tài)標(biāo)志寄存器的地址中斷狀態(tài)標(biāo)志寄存器的地址=4004_90A0+x*1000 (x=AE,對應(yīng),對應(yīng)04) 1、寄存器映像地址、寄存器映像地址 2相關(guān)名詞解釋相關(guān)名詞解釋 (1)模擬引腳模擬引腳(Analog Pin):):是指不能夠配置成是指不能夠配置成GPIO的引腳,的引腳, 如如RESET、EXTAL及及XTAL等引腳。等引腳。 (2)數(shù)字引腳數(shù)字引腳(Digital Pin):):是指能夠被配置成是指能夠被配置成GPIO的引腳。的引腳

12、。 (3)無源濾波器無源濾波器(Passive Filter):):是由電容器、電感器和電是由電容器、電感器和電 阻器適當(dāng)組合而成,并兼有無功補(bǔ)償和調(diào)壓功能的濾波器。阻器適當(dāng)組合而成,并兼有無功補(bǔ)償和調(diào)壓功能的濾波器。 (4)引腳驅(qū)動能力引腳驅(qū)動能力(Drive Strength):):是指引腳放出或吸入電是指引腳放出或吸入電 流的承受能力,一般用流的承受能力,一般用mA單位度量。單位度量。 (5)轉(zhuǎn)換速率轉(zhuǎn)換速率(Slew Rate):):是指電壓在高低電平間轉(zhuǎn)換的時是指電壓在高低電平間轉(zhuǎn)換的時 間間隔,一般用間間隔,一般用ns單位度量。單位度量。 (6)引腳復(fù)用槽引腳復(fù)用槽(Pin Mux

13、ing Slot):):是指信號復(fù)用裝置與引是指信號復(fù)用裝置與引 腳之間的接口,引腳通過連接不同的信號復(fù)用槽可以配置成不腳之間的接口,引腳通過連接不同的信號復(fù)用槽可以配置成不 同的功能。同的功能。 (7)寫寫1清清0(W1C):):是指對某位寫是指對某位寫1而使得該位清而使得該位清0。 一、端口控制模塊一、端口控制模塊 3引腳控制寄存器引腳控制寄存器(PORTx_PCRn) 其中其中“X”表示復(fù)位后狀態(tài)不確定。有關(guān)功能說明請見表示復(fù)位后狀態(tài)不確定。有關(guān)功能說明請見 教材教材P65-P66和和KL25參考參考手冊手冊: P183-185。 一、端口控制模塊一、端口控制模塊 高高16位位 低低16

14、位位 4全局引腳控制寄存器全局引腳控制寄存器(PORTx_GPCLR、PORTx_GPCHR ) KL25參考參考手冊手冊: P185-186 l全局引腳全局引腳寫使能寫使能字段字段(Global Pin Write Enable,GPWE) l全局引腳全局引腳寫數(shù)據(jù)寫數(shù)據(jù)字段字段(Global Pin Write Data,GPWD) l將每個端口的將每個端口的32個引腳控制寄存器分為兩組:個引腳控制寄存器分為兩組:低引腳控制寄存低引腳控制寄存 器組(器組(n=150)和和高引腳控制寄存器組(高引腳控制寄存器組(n=3116)。 lPORTx_GPCLR配置低引腳控制寄存器組配置低引腳控制寄

15、存器組,PORTx_GPCHR配配 置高引腳控制寄存器組置高引腳控制寄存器組。 l GPWE字段對應(yīng)字段對應(yīng)16個個引腳控制寄存器引腳控制寄存器,GPWD字段為向相應(yīng)字段為向相應(yīng) 引腳控制寄存器低引腳控制寄存器低16位寫入的數(shù)據(jù)。位寫入的數(shù)據(jù)。 一、端口控制模塊一、端口控制模塊 5中斷狀態(tài)標(biāo)志寄存器(中斷狀態(tài)標(biāo)志寄存器(PORTx_ISFR) KL25參考參考手冊手冊: P186-187 一、端口控制模塊一、端口控制模塊 u數(shù)字引腳模式下,每個引腳的中斷模式可以獨(dú)立配置(引腳控?cái)?shù)字引腳模式下,每個引腳的中斷模式可以獨(dú)立配置(引腳控 制寄存器的制寄存器的IRQC字段),支持低功耗模式下喚醒。字段

16、),支持低功耗模式下喚醒。 u每個端口的每個端口的PORTx_ISFR對應(yīng)對應(yīng)32個引腳,若相應(yīng)引腳的個引腳,若相應(yīng)引腳的中斷狀中斷狀 態(tài)標(biāo)志態(tài)標(biāo)志(Interrupt Status Flag, ISF) 位為位為1,表明配置的中斷已經(jīng)被,表明配置的中斷已經(jīng)被 檢測到;反之沒有。檢測到;反之沒有。 uPORTx_ISFR的各位具有寫的各位具有寫1清清0特性。特性。 1 1寄存器映射像地址寄存器映射像地址( KL25參考參考手冊手冊: P773-775) p每個每個GPIO口均有口均有6個寄存器:個寄存器:數(shù)據(jù)輸出寄存器、輸出數(shù)據(jù)輸出寄存器、輸出 置置1 1寄存器、輸出清寄存器、輸出清0 0寄存

17、器、輸出反轉(zhuǎn)寄存器、數(shù)據(jù)輸寄存器、輸出反轉(zhuǎn)寄存器、數(shù)據(jù)輸 入寄存器、數(shù)據(jù)方向寄存器入寄存器、數(shù)據(jù)方向寄存器。 pPORTA口寄存器的基地址為口寄存器的基地址為400F_F000h,其他各口寄,其他各口寄 存器的基地址依次加存器的基地址依次加40h。 p數(shù)據(jù)輸出寄存器的地址就是口的基地址,其他寄存器數(shù)據(jù)輸出寄存器的地址就是口的基地址,其他寄存器 的地址依次加的地址依次加4。 p所有寄存器均為所有寄存器均為32位寬度,復(fù)位時均為位寬度,復(fù)位時均為0000_0000h。 二、二、GPIO模塊(模塊(KL25參考參考手冊手冊: 第第41章章) 4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)

18、模塊的編程結(jié)構(gòu) 2數(shù)據(jù)輸出寄存器數(shù)據(jù)輸出寄存器(GPIOx_PDOR) 教材教材P68KL25參考參考手冊手冊: P775 二、二、GPIO模塊模塊 引腳配置為輸出時:某位為引腳配置為輸出時:某位為0,則對應(yīng)引腳為低電平;,則對應(yīng)引腳為低電平; 某位為某位為1,則對應(yīng)引腳為高電平。,則對應(yīng)引腳為高電平。 3輸出置輸出置1寄存器寄存器(GPIOx_PSOR) 教材教材P68KL25參考參考手冊手冊: P776 二、二、GPIO模塊模塊 某位為某位為0,則不改變數(shù)據(jù)輸出寄存器相應(yīng)位;某位為,則不改變數(shù)據(jù)輸出寄存器相應(yīng)位;某位為1, 則將數(shù)據(jù)輸出寄存器相應(yīng)位置則將數(shù)據(jù)輸出寄存器相應(yīng)位置1。 4輸出清

19、輸出清0 0寄存器寄存器(GPIOx_PCOR) 教材教材P68KL25參考參考手冊手冊: P776 二、二、GPIO模塊模塊 某位為某位為0,則不改變數(shù)據(jù)輸出寄存器相應(yīng)位;某位為,則不改變數(shù)據(jù)輸出寄存器相應(yīng)位;某位為1, 則將數(shù)據(jù)輸出寄存器相應(yīng)位清則將數(shù)據(jù)輸出寄存器相應(yīng)位清0。 5輸出反轉(zhuǎn)寄存器輸出反轉(zhuǎn)寄存器(GPIOx_PTOR) 教材教材P68KL25參考參考手冊手冊: P777 二、二、GPIO模塊模塊 某位為某位為0,則不改變數(shù)據(jù)輸出寄存器相應(yīng)位;某位為,則不改變數(shù)據(jù)輸出寄存器相應(yīng)位;某位為1, 則將數(shù)據(jù)輸出寄存器相應(yīng)位取反。則將數(shù)據(jù)輸出寄存器相應(yīng)位取反。 6數(shù)據(jù)輸入寄存器數(shù)據(jù)輸入寄

20、存器(GPIOx_PDIR) 教材教材P68KL25參考參考手冊手冊: P777 二、二、GPIO模塊模塊 某位為某位為0,則對應(yīng)引腳為低電平;某位為,則對應(yīng)引腳為低電平;某位為1,則對應(yīng)引,則對應(yīng)引 腳為高電平。腳為高電平。 7數(shù)據(jù)方向寄存器數(shù)據(jù)方向寄存器(GPIOx_PDDR) 教材教材P68KL25參考參考手冊手冊: P778 二、二、GPIO模塊模塊 某位為某位為0,則對應(yīng)引腳為輸入;某位為,則對應(yīng)引腳為輸入;某位為1,則對應(yīng)引腳,則對應(yīng)引腳 為輸出。為輸出。 1 GPIO基本編程步驟基本編程步驟 (1)通過端口控制模塊的)通過端口控制模塊的引腳控制寄存器引腳控制寄存器的引腳復(fù)用的引腳

21、復(fù)用 控制字段(控制字段(MUX)設(shè)定其為)設(shè)定其為GPIO功能。功能。 (2)通過)通過GPIO模塊相應(yīng)口的模塊相應(yīng)口的數(shù)據(jù)方向寄存器數(shù)據(jù)方向寄存器來指定相來指定相 應(yīng)引腳為輸入或輸出功能。應(yīng)引腳為輸入或輸出功能。 (3)若是輸出引腳,則通過設(shè)置)若是輸出引腳,則通過設(shè)置數(shù)據(jù)輸出寄存器數(shù)據(jù)輸出寄存器來指來指 定相應(yīng)引腳輸出低電平或高電平。亦可通過設(shè)置定相應(yīng)引腳輸出低電平或高電平。亦可通過設(shè)置“輸輸 出置出置1寄存器寄存器”、“輸出清輸出清0寄存器寄存器”、“輸出反轉(zhuǎn)寄輸出反轉(zhuǎn)寄 存器存器”來改變引腳的狀態(tài)。來改變引腳的狀態(tài)。 (4)若是輸入引腳,則通過)若是輸入引腳,則通過數(shù)據(jù)輸入寄存器數(shù)據(jù)

22、輸入寄存器來獲得引來獲得引 腳的狀態(tài)。腳的狀態(tài)。 三、三、GPIO基本編程步驟與舉例基本編程步驟與舉例 4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)模塊的編程結(jié)構(gòu) 2舉例舉例 設(shè)設(shè)PORTB口的口的19腳接一個發(fā)光二極管,低電平點(diǎn)亮。腳接一個發(fā)光二極管,低電平點(diǎn)亮。 (1)設(shè)置設(shè)置PORTB口的口的19引腳為引腳為GPIO功能功能 volatile uint_32 *portB_ptr = (uint_32*)0 x4004A000u; volatile uint_32 *portB_PCR_19 = portB_ptr + 19; *portB_PCR_19 = 0 x0000

23、0100; (2)設(shè)置設(shè)置PORTB口的口的19引腳為輸出功能引腳為輸出功能 volatile uint_32 *gpioB_ptr = (uint_32*)0 x400FF040u; volatile uint_32 *portB_PDDR = gpioB_ptr + 5; *portB_PDDR |= (119); 三、三、GPIO基本編程步驟與舉例基本編程步驟與舉例 2舉例舉例 設(shè)設(shè)PORTB口的口的19腳接一個發(fā)光二極管,低電平點(diǎn)亮。腳接一個發(fā)光二極管,低電平點(diǎn)亮。 (3)設(shè)置設(shè)置PORTB口的口的19引腳為低電平引腳為低電平 volatile uint_32 *portB_PDOR

24、= gpioB_ptr + 0; *portB_PDOR 三、三、GPIO基本編程步驟與舉例基本編程步驟與舉例 一、制作一、制作GPIO驅(qū)動構(gòu)件的必要性驅(qū)動構(gòu)件的必要性 u將軟件構(gòu)件技術(shù)應(yīng)用到嵌入式軟件開發(fā)中,可以大大將軟件構(gòu)件技術(shù)應(yīng)用到嵌入式軟件開發(fā)中,可以大大 提高嵌入式開發(fā)的效率與穩(wěn)定性,可以使軟件具有更提高嵌入式開發(fā)的效率與穩(wěn)定性,可以使軟件具有更 好的好的開放性、通用性和適應(yīng)性開放性、通用性和適應(yīng)性。 u特別是對于底層硬件的驅(qū)動編程,只有封裝成底層驅(qū)特別是對于底層硬件的驅(qū)動編程,只有封裝成底層驅(qū) 動構(gòu)件,動構(gòu)件,通過函數(shù)調(diào)用與傳參的方式實(shí)現(xiàn)對引腳底層通過函數(shù)調(diào)用與傳參的方式實(shí)現(xiàn)對引腳

25、底層 硬件的操作硬件的操作,才能使才能使軟件便于維護(hù)與移植軟件便于維護(hù)與移植,也可使開,也可使開 發(fā)者專注于應(yīng)用軟件穩(wěn)定性與功能設(shè)計(jì)上。發(fā)者專注于應(yīng)用軟件穩(wěn)定性與功能設(shè)計(jì)上。 u底層驅(qū)動構(gòu)件的封裝,也為在底層驅(qū)動構(gòu)件的封裝,也為在操作系統(tǒng)下操作系統(tǒng)下對底層硬件對底層硬件 的操作提供了基礎(chǔ)。的操作提供了基礎(chǔ)。 4.3 GPIO驅(qū)動構(gòu)件封裝方法與封裝規(guī)范驅(qū)動構(gòu)件封裝方法與封裝規(guī)范 第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織 1)模塊初始化模塊初始化(gpio_init) 由于引腳具有復(fù)用特性,應(yīng)把引腳設(shè)置成由于引腳具有復(fù)用特性,應(yīng)把引腳設(shè)置成GPIO 功能;應(yīng)把引腳設(shè)置成輸入

26、或輸出功能;若是輸出,功能;應(yīng)把引腳設(shè)置成輸入或輸出功能;若是輸出, 還要給出引腳的初始狀態(tài)。還要給出引腳的初始狀態(tài)。 viod gpio_init(uint_8 port, uint_8 pin, uint_8 dir, uint_8 state) 2)設(shè)置引腳狀態(tài)設(shè)置引腳狀態(tài)(gpio_set) 對于輸出,應(yīng)設(shè)置引腳是輸出高電平(邏輯對于輸出,應(yīng)設(shè)置引腳是輸出高電平(邏輯1) 還是低電平(邏輯還是低電平(邏輯0)。)。 void gpio_set(uint_8 port, uint_8 pin, uint_8 state) 二、二、GPIO驅(qū)動構(gòu)件封裝方法驅(qū)動構(gòu)件封裝方法 4.3 GPIO

27、驅(qū)動構(gòu)件封裝方法與封裝規(guī)范驅(qū)動構(gòu)件封裝方法與封裝規(guī)范 3)獲得引腳狀態(tài)()獲得引腳狀態(tài)(gpio_get) 對于輸入,應(yīng)獲得引腳的狀態(tài)是高電平還是低電平。對于輸入,應(yīng)獲得引腳的狀態(tài)是高電平還是低電平。 uint_8 gpio_get(uint_8 port, uint_8 pin) 4)引腳狀態(tài)反轉(zhuǎn)()引腳狀態(tài)反轉(zhuǎn)(void gpio_reverse) 將引腳當(dāng)前的狀態(tài)取反。將引腳當(dāng)前的狀態(tài)取反。 void gpio_reverse(uint_8 port, uint_8 pin) 5)引腳上下拉使能函數(shù)()引腳上下拉使能函數(shù)(void gpio_pull) 對于輸入,可以設(shè)定內(nèi)部上拉或下拉。

28、對于輸入,可以設(shè)定內(nèi)部上拉或下拉。 void gpio_pull(uint_8 port,uint_8 pin, uint_8 pullselect) 二、二、GPIO驅(qū)動構(gòu)件封裝方法驅(qū)動構(gòu)件封裝方法 三、嵌入式設(shè)計(jì)編碼基本規(guī)范三、嵌入式設(shè)計(jì)編碼基本規(guī)范 1.1.嵌入式驅(qū)動文件嵌入式驅(qū)動文件 構(gòu)件化底層驅(qū)動函數(shù)構(gòu)件化底層驅(qū)動函數(shù)的工作是對寄存器操作的基本的工作是對寄存器操作的基本 封裝。在無操作系統(tǒng)下,可直接調(diào)用底層驅(qū)動函數(shù)進(jìn)封裝。在無操作系統(tǒng)下,可直接調(diào)用底層驅(qū)動函數(shù)進(jìn) 行編程。行編程。 2.2.數(shù)據(jù)類型數(shù)據(jù)類型 嵌入式程序設(shè)計(jì)與一般的程序設(shè)計(jì)有所不同,與嵌入式程序設(shè)計(jì)與一般的程序設(shè)計(jì)有所不

29、同,與 嵌入式程序中打交道的大多數(shù)都是底層硬件的存儲單嵌入式程序中打交道的大多數(shù)都是底層硬件的存儲單 元或是寄存器,所以這里將需要的數(shù)據(jù)類型定義在元或是寄存器,所以這里將需要的數(shù)據(jù)類型定義在 “common.h”文件中。文件中。 4.3 GPIO驅(qū)動構(gòu)件封裝方法與封裝規(guī)范驅(qū)動構(gòu)件封裝方法與封裝規(guī)范 3.3.函數(shù)函數(shù) 為嵌入式設(shè)備編寫設(shè)備驅(qū)動程序,涉及為嵌入式設(shè)備編寫設(shè)備驅(qū)動程序,涉及驅(qū)動接口函驅(qū)動接口函 數(shù)和自定義函數(shù)數(shù)和自定義函數(shù)。在調(diào)用函數(shù)時,應(yīng)從相應(yīng)頭文件中復(fù)。在調(diào)用函數(shù)時,應(yīng)從相應(yīng)頭文件中復(fù) 制函數(shù)頭,然后在參數(shù)聲明的位置上替換指定參數(shù)值。制函數(shù)頭,然后在參數(shù)聲明的位置上替換指定參數(shù)值

30、。 4.4.工程文件結(jié)構(gòu)工程文件結(jié)構(gòu) 工程文件夾中包含該工程的所有源代碼文件,下設(shè)工程文件夾中包含該工程的所有源代碼文件,下設(shè) 個個子文件夾:子文件夾:Common、CPU、Doc、Drivers、 FLASH、Project_Settings、Sources、swComponents。 三、嵌入式設(shè)計(jì)編碼基本規(guī)范三、嵌入式設(shè)計(jì)編碼基本規(guī)范 四、底層驅(qū)動構(gòu)件封裝規(guī)范概要四、底層驅(qū)動構(gòu)件封裝規(guī)范概要 u所有底層驅(qū)動構(gòu)件放在工程文件夾的所有底層驅(qū)動構(gòu)件放在工程文件夾的“Drivers”文件文件 夾中,以構(gòu)件名命名。夾中,以構(gòu)件名命名。 u每個構(gòu)件由每個構(gòu)件由頭文件頭文件(.h)與源程序文件與源程序

31、文件(.c )組成,組成, 放在以構(gòu)件名命名的文件夾中。放在以構(gòu)件名命名的文件夾中。 l頭文件中僅包含對外接口函數(shù)的頭文件中僅包含對外接口函數(shù)的聲明聲明。 l源程序文件中包含對外接口函數(shù)及內(nèi)部函數(shù)的源程序文件中包含對外接口函數(shù)及內(nèi)部函數(shù)的實(shí)現(xiàn)實(shí)現(xiàn)。 u注意:注意: 1)頭文件聲明對外接口函數(shù)的)頭文件聲明對外接口函數(shù)的順序順序與源文件實(shí)現(xiàn)對外接口函數(shù)的與源文件實(shí)現(xiàn)對外接口函數(shù)的 順序應(yīng)保持一致。順序應(yīng)保持一致。 2)源文件中)源文件中內(nèi)部函數(shù)內(nèi)部函數(shù)的聲明,放在對外接口函數(shù)代碼的前面,內(nèi)的聲明,放在對外接口函數(shù)代碼的前面,內(nèi) 部函數(shù)的實(shí)現(xiàn)放在對外接口函數(shù)代碼的后面。部函數(shù)的實(shí)現(xiàn)放在對外接口函數(shù)

32、代碼的后面。 3)制作構(gòu)件時,要考慮移植性,要有)制作構(gòu)件時,要考慮移植性,要有規(guī)范規(guī)范的編碼風(fēng)格與注釋,不的編碼風(fēng)格與注釋,不 使用使用全局變量全局變量。 4.3 GPIO驅(qū)動構(gòu)件封裝方法與封裝規(guī)范驅(qū)動構(gòu)件封裝方法與封裝規(guī)范 五五、KL25的的GPIO驅(qū)動構(gòu)件設(shè)計(jì)驅(qū)動構(gòu)件設(shè)計(jì) 1GPIO驅(qū)動構(gòu)件頭文件驅(qū)動構(gòu)件頭文件(gpio.h) 4.3 GPIO驅(qū)動構(gòu)件封裝方法與封裝規(guī)范驅(qū)動構(gòu)件封裝方法與封裝規(guī)范 1GPIO驅(qū)動構(gòu)件頭文件(驅(qū)動構(gòu)件頭文件(gpio.h) 1GPIO驅(qū)動構(gòu)件頭文件(驅(qū)動構(gòu)件頭文件(gpio.h) 1GPIO驅(qū)動構(gòu)件頭文件(驅(qū)動構(gòu)件頭文件(gpio.h) 1GPIO驅(qū)動構(gòu)件頭

33、文件(驅(qū)動構(gòu)件頭文件(gpio.h) 五、五、KL25的的GPIO驅(qū)動構(gòu)件設(shè)計(jì)驅(qū)動構(gòu)件設(shè)計(jì) 2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明 1)兩個結(jié)構(gòu)體類型兩個結(jié)構(gòu)體類型 1)兩個結(jié)構(gòu)體類型兩個結(jié)構(gòu)體類型 1)兩個結(jié)構(gòu)體類型兩個結(jié)構(gòu)體類型 2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明 2)端口模塊各口的基地址端口模塊各口的基地址 2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明 3)GPIO模塊各口的基地址模塊各口的基地址 2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明 4)引腳控制寄存器的各位及操作引腳控制寄存器的各位及操作 2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明 5)位操作宏函數(shù)位操作宏函數(shù) p在通用頭文件中給出:在通用頭文件中給出: B

34、SET( )、BCLR( )、BGET( ) 2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明 3GPIO驅(qū)動構(gòu)件源文件驅(qū)動構(gòu)件源文件(gpio.c) 五、五、KL25的的GPIO驅(qū)動構(gòu)件設(shè)計(jì)驅(qū)動構(gòu)件設(shè)計(jì) 3GPIO驅(qū)動構(gòu)件源文件(驅(qū)動構(gòu)件源文件(gpio.c) 3GPIO驅(qū)動構(gòu)件源文件(驅(qū)動構(gòu)件源文件(gpio.c) 3GPIO驅(qū)動構(gòu)件源文件(驅(qū)動構(gòu)件源文件(gpio.c) 3GPIO驅(qū)動構(gòu)件源文件(驅(qū)動構(gòu)件源文件(gpio.c) 3GPIO驅(qū)動構(gòu)件源文件(驅(qū)動構(gòu)件源文件(gpio.c) 3GPIO驅(qū)動構(gòu)件源文件(驅(qū)動構(gòu)件源文件(gpio.c) 4.4 第一個第一個C語言工程:控制小燈閃爍語言工程:控制小

35、燈閃爍 第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織 一一、CW10.3簡介簡介 pCodeWarrior(簡稱簡稱CW)集成開發(fā)環(huán)境是飛思卡爾集成開發(fā)環(huán)境是飛思卡爾 公司推出的面向公司推出的面向嵌入式應(yīng)用嵌入式應(yīng)用開發(fā)的商業(yè)軟件工具,功開發(fā)的商業(yè)軟件工具,功 能強(qiáng)大。能強(qiáng)大。 pCW集成了方便開發(fā)人員使用的編輯器、源碼瀏覽器、集成了方便開發(fā)人員使用的編輯器、源碼瀏覽器、 搜索引擎、構(gòu)造系統(tǒng)、調(diào)試器和工程管理器等功能模搜索引擎、構(gòu)造系統(tǒng)、調(diào)試器和工程管理器等功能模 塊,提供了高度可視化操作及自動創(chuàng)建復(fù)雜嵌入式系塊,提供了高度可視化操作及自動創(chuàng)建復(fù)雜嵌入式系 統(tǒng)應(yīng)用的功能。統(tǒng)

36、應(yīng)用的功能。 p本書使用的是:本書使用的是:CodeWarrior Development Studio v10.3集成開發(fā)環(huán)境集成開發(fā)環(huán)境(簡稱簡稱CW10.3),它提供了工程管),它提供了工程管 理、源程序編輯、編譯、連接、下載調(diào)試等功能。理、源程序編輯、編譯、連接、下載調(diào)試等功能。 二、二、Light構(gòu)件的設(shè)計(jì)構(gòu)件的設(shè)計(jì) 1Light構(gòu)件的頭文件構(gòu)件的頭文件(light.h) 2Light構(gòu)件的源文件構(gòu)件的源文件(light.c) 4.4 第一個第一個C語言工程:控制小燈閃爍語言工程:控制小燈閃爍 三、三、Light構(gòu)件的測試構(gòu)件的測試 Light構(gòu)件測試工程主程序構(gòu)件測試工程主程序(m

37、ain.c) 4.4 第一個第一個C語言工程:控制小燈閃爍語言工程:控制小燈閃爍 u嵌入式系統(tǒng)工程包含若干文件嵌入式系統(tǒng)工程包含若干文件,如:程序文件、頭文,如:程序文件、頭文 件、與編譯調(diào)試相關(guān)的信息文件、工程說明文件以及件、與編譯調(diào)試相關(guān)的信息文件、工程說明文件以及 工程目標(biāo)代碼文件等。工程目標(biāo)代碼文件等。 u工程文件的合理組織,不但會提高項(xiàng)目的開發(fā)效率,工程文件的合理組織,不但會提高項(xiàng)目的開發(fā)效率, 也會降低項(xiàng)目的維護(hù)難度。也會降低項(xiàng)目的維護(hù)難度。 u嵌入式系統(tǒng)工程的文件組織方法嵌入式系統(tǒng)工程的文件組織方法以硬件對象為核心以硬件對象為核心來來 展開,系統(tǒng)中每個對象應(yīng)包含相關(guān)的頭文件、程序

38、文展開,系統(tǒng)中每個對象應(yīng)包含相關(guān)的頭文件、程序文 件及說明文件等。件及說明文件等。 u以硬件對象的方式來組織文件,會使得工程結(jié)構(gòu)清晰,以硬件對象的方式來組織文件,會使得工程結(jié)構(gòu)清晰, 錯誤定位方便,后期維護(hù)容易,也體現(xiàn)了嵌入式系統(tǒng)錯誤定位方便,后期維護(hù)容易,也體現(xiàn)了嵌入式系統(tǒng) 軟件工程軟件工程的基本思想。的基本思想。 4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析 第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織 使用使用CW新建工程目錄后產(chǎn)生以下三個部分:新建工程目錄后產(chǎn)生以下三個部分: (1)工程配置文件夾工程配置文件夾 包含與調(diào)試相關(guān)的

39、配置文件、鏈接文件以及啟動代包含與調(diào)試相關(guān)的配置文件、鏈接文件以及啟動代 碼文件,對于一般的開發(fā)過程不需要改動。碼文件,對于一般的開發(fā)過程不需要改動。 (2)工程輸出文件夾工程輸出文件夾 包含源碼工程經(jīng)過編譯鏈接之后生成的文件,其包含源碼工程經(jīng)過編譯鏈接之后生成的文件,其 中中.elf文件或文件或.hex文件為生成的程序機(jī)器碼文件,可下載文件為生成的程序機(jī)器碼文件,可下載 到目標(biāo)板上運(yùn)行。到目標(biāo)板上運(yùn)行。 (3)源程序文件夾源程序文件夾 包含通用函數(shù)、驅(qū)動構(gòu)件文件、主程序文件以及中包含通用函數(shù)、驅(qū)動構(gòu)件文件、主程序文件以及中 斷服務(wù)例程文件等,這些文件是工程開發(fā)人員進(jìn)行編程斷服務(wù)例程文件等,這

40、些文件是工程開發(fā)人員進(jìn)行編程 的主要對象。的主要對象。 一、一、CW10.3開發(fā)環(huán)境下工程文件組織框架開發(fā)環(huán)境下工程文件組織框架 4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析 工程工程 文件文件 編譯、連接編譯、連接 目標(biāo)代碼文件目標(biāo)代碼文件(.(.elf) ) Intel HEX文件文件(.hex) ) 存儲器分配文件存儲器分配文件(.map(.map) CW生成的文件生成的文件 一、一、CW10.3開發(fā)環(huán)境下工程文件組織框架開發(fā)環(huán)境下工程文件組織框架 芯片上電啟動后,首先查詢保存在芯片上電啟動后,首先查詢保存在Flash存儲區(qū)首端的存儲區(qū)首端的中斷中斷

41、 向量表向量表,取出第一個表項(xiàng)的內(nèi)容設(shè)定為,取出第一個表項(xiàng)的內(nèi)容設(shè)定為堆棧初始化指針堆棧初始化指針,取出,取出 第二個表項(xiàng)的內(nèi)容作為第二個表項(xiàng)的內(nèi)容作為啟動函數(shù)(啟動函數(shù)(startup)的入口地址)的入口地址。 二、上電執(zhí)行過程二、上電執(zhí)行過程 4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析 三、鏈接文件分析三、鏈接文件分析 4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析 三、鏈接文件分析三、鏈接文件分析 4.6 第一個匯編語言工程:控制小燈閃爍第一個匯編語言工程:控制小燈閃爍 l 相對于相對于C語言編程,匯編在編程的直

42、觀性、編程效率、語言編程,匯編在編程的直觀性、編程效率、 以及可讀性等方面都有所欠缺,但掌握基本的匯編語言以及可讀性等方面都有所欠缺,但掌握基本的匯編語言 編程方法是嵌入式學(xué)習(xí)的基本功。編程方法是嵌入式學(xué)習(xí)的基本功。 l 匯編工程通常包含芯片相關(guān)的程序框架文件、軟件構(gòu)匯編工程通常包含芯片相關(guān)的程序框架文件、軟件構(gòu) 件文件、工程設(shè)置文件、主程序文件及抽象構(gòu)件文件等。件文件、工程設(shè)置文件、主程序文件及抽象構(gòu)件文件等。 l匯編工程類似匯編工程類似C工程,仍然工程,仍然按構(gòu)件方式進(jìn)行組織按構(gòu)件方式進(jìn)行組織。 l匯編工程僅包含一個匯編主程序文件(匯編工程僅包含一個匯編主程序文件(main.s)。)。 l匯編程序的主體要盡可能簡潔,程序中的其余功能應(yīng)匯編程序的主體要盡可能簡潔,程序中的其余功能應(yīng) 盡量由子程序去完成,盡量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論