版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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)接口,是微接口,是微控制器同外界進行交互的重要通道。這里的接口英文是控制器同外界進行交互的重要通道。這里的接口英文是port,也可以翻譯為,也可以翻譯為“端口端口”;另一個接口的英文是;另一個接口的英文是interface。二、通用二、通用I/O的概念的概念p 通用通用I/O,記為,記為GPIO(General-Purpose I/O),即基),即基本的輸入本的輸入/輸出,有時也稱并行輸出,有時也稱并行I/O或普通或普通I/O,它是,它是I/O的最基本形式。的最基本形式。第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織4.1 通用通用I/O接口基本概念
4、及連接方法接口基本概念及連接方法二、通用二、通用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接口基本概念及連接方法接口基本概念及連接方法三、輸入引腳的基本接法三、輸入引腳的基本接法若若MCU的某個引腳通過的某個引腳
5、通過一個電阻接到一個電阻接到電源電源(Vcc)上,這個電阻被稱為上,這個電阻被稱為“上上拉電阻拉電阻”。若若MCU的某個引腳通過的某個引腳通過一個電阻接到一個電阻接到地地(GND)上,則相應(yīng)的電阻被稱為上,則相應(yīng)的電阻被稱為“下拉電阻下拉電阻”。懸空懸空的芯片引腳被上拉的芯片引腳被上拉電阻或下拉電阻初始化為電阻或下拉電阻初始化為高電平或低電平。高電平或低電平。4.1 通用通用I/O接口基本概念及連接方法接口基本概念及連接方法u作為通用輸入引腳,是作為通用輸入引腳,是通通過該引腳向過該引腳向MCU內(nèi)部輸入內(nèi)部輸入高電平或低電平高電平或低電平來驅(qū)動器來驅(qū)動器件工作。件工作。三、輸入引腳的基本接法三
6、、輸入引腳的基本接法四、輸出引腳的基本接法四、輸出引腳的基本接法u作為通用輸出引腳,作為通用輸出引腳,MCU內(nèi)部內(nèi)部程序向該引腳輸出高電平或低程序向該引腳輸出高電平或低電平電平來驅(qū)動器件工作。來驅(qū)動器件工作。u右圖中:右圖中:1)O1引腳是發(fā)光二極管引腳是發(fā)光二極管LED的驅(qū)的驅(qū)動引腳:當動引腳:當O1引腳輸出高電平引腳輸出高電平時,時,LED不亮;當不亮;當O1引腳輸出引腳輸出低電平時,低電平時,LED點亮。點亮。2)O2引腳接蜂鳴器驅(qū)動電路:當引腳接蜂鳴器驅(qū)動電路:當O2腳輸出高電平時,蜂鳴器響;腳輸出高電平時,蜂鳴器響;O2腳輸出低電平時,蜂鳴器不腳輸出低電平時,蜂鳴器不響。響。4.1
7、通用通用I/O接口基本概念及連接方法接口基本概念及連接方法一、端口控制模塊(一、端口控制模塊(KL25參考參考手冊手冊: 第第11章章)uKL25的大部分引腳具有復(fù)用功能,可以通過端口控制的大部分引腳具有復(fù)用功能,可以通過端口控制模塊模塊(Port control and interrupts,PORT)提供的)提供的寄寄存器編程存器編程指定其為某一具體功能。指定其為某一具體功能。uPORT模塊內(nèi)含模塊內(nèi)含3類寄存器:類寄存器:引腳控制寄存器引腳控制寄存器(Pin Control Register, PCR),),全局引腳控制寄存器全局引腳控制寄存器(Global Pin Control Re
8、gister, GPCR)、)、中斷狀態(tài)標中斷狀態(tài)標志寄存器志寄存器(Interrupt Status Flag Register, ISFR)。)。u每個寄存器都是每個寄存器都是32位位的。的。4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)模塊的編程結(jié)構(gòu)第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織1、寄存器映像地址寄存器映像地址( KL25參考參考手冊手冊: P177-182)一、端口控制模塊一、端口控制模塊1、寄存器映像地址寄存器映像地址1、寄存器映像地址、寄存器映像地址1、寄存器映像地址、寄存器映像地址1、寄存器映像地址、寄存器映像地址1、寄存器映像地址、
9、寄存器映像地址1、寄存器映像地址、寄存器映像地址1、寄存器映像地址、寄存器映像地址pKL25芯片有芯片有5個端口個端口AE,每個端口有:,每個端口有:l32個個引腳控制寄存器引腳控制寄存器 PORTx_PCRn (其中(其中x=AE,n=031)l2個個全局引腳控制寄存器全局引腳控制寄存器 PORTx_GPCLR、PORTx_GPCHRl1個個中斷狀態(tài)標志寄存器中斷狀態(tài)標志寄存器 PORTx_ISFR(1)引腳控制寄存器引腳控制寄存器p端口端口x的基地址的基地址=4004_9000+x*1000(x=AE,對應(yīng)對應(yīng)04)。)。p端口端口x的每個引腳控制寄存器的每個引腳控制寄存器PORTx_PC
10、Rn的地址的地址=4004_9000+x*1000+n*4(x=AE,n=031)。1、寄存器映像地址、寄存器映像地址略去十六進制前綴略去十六進制前綴0 x(2)全局引腳控制寄存器全局引腳控制寄存器 p全局引腳控制寄存器(低)全局引腳控制寄存器(低)PORTx_GPCLR的地址的地址=4004_9080+x*1000 (x=AE,對應(yīng),對應(yīng)04)p全局引腳控制寄存器(高)全局引腳控制寄存器(高)PORTx_GPCHR的地址的地址=4004_9084+x*1000 (x=AE,對應(yīng),對應(yīng)04)(3)中斷狀態(tài)標志寄存器中斷狀態(tài)標志寄存器 p中斷狀態(tài)標志寄存器的地址中斷狀態(tài)標志寄存器的地址=4004
11、_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的引腳。的引腳。(3)無源濾波器無源濾波器(Passive Filter):):是由電容器、電感器和電是由電容器、電感器和電阻器適當組合而成,并兼有無功補償和調(diào)壓功能的濾波器。阻器適當組合而成,并兼有無功補償和調(diào)壓功能的濾波器。(4
12、)引腳驅(qū)動能力引腳驅(qū)動能力(Drive Strength):):是指引腳放出或吸入電是指引腳放出或吸入電流的承受能力,一般用流的承受能力,一般用mA單位度量。單位度量。(5)轉(zhuǎn)換速率轉(zhuǎn)換速率(Slew Rate):):是指電壓在高低電平間轉(zhuǎn)換的時是指電壓在高低電平間轉(zhuǎn)換的時間間隔,一般用間間隔,一般用ns單位度量。單位度量。(6)引腳復(fù)用槽引腳復(fù)用槽(Pin Muxing Slot):):是指信號復(fù)用裝置與引是指信號復(fù)用裝置與引腳之間的接口,引腳通過連接不同的信號復(fù)用槽可以配置成不腳之間的接口,引腳通過連接不同的信號復(fù)用槽可以配置成不同的功能。同的功能。(7)寫寫1清清0(W1C):):是指對
13、某位寫是指對某位寫1而使得該位清而使得該位清0。一、端口控制模塊一、端口控制模塊3引腳控制寄存器引腳控制寄存器(PORTx_PCRn)其中其中“X”表示復(fù)位后狀態(tài)不確定。有關(guān)功能說明請見表示復(fù)位后狀態(tài)不確定。有關(guān)功能說明請見教材教材P65-P66和和KL25參考參考手冊手冊: P183-185。一、端口控制模塊一、端口控制模塊高高16位位低低16位位4全局引腳控制寄存器全局引腳控制寄存器(PORTx_GPCLR、PORTx_GPCHR ) KL25參考參考手冊手冊: P185-186l全局引腳全局引腳寫使能寫使能字段字段(Global Pin Write Enable,GPWE)l全局引腳全局
14、引腳寫數(shù)據(jù)寫數(shù)據(jù)字段字段(Global Pin Write Data,GPWD)l將每個端口的將每個端口的32個引腳控制寄存器分為兩組:個引腳控制寄存器分為兩組:低引腳控制寄存低引腳控制寄存器組(器組(n=150)和和高引腳控制寄存器組(高引腳控制寄存器組(n=3116)。lPORTx_GPCLR配置低引腳控制寄存器組配置低引腳控制寄存器組,PORTx_GPCHR配配置高引腳控制寄存器組置高引腳控制寄存器組。l GPWE字段對應(yīng)字段對應(yīng)16個個引腳控制寄存器引腳控制寄存器,GPWD字段為向相應(yīng)字段為向相應(yīng)引腳控制寄存器低引腳控制寄存器低16位寫入的數(shù)據(jù)。位寫入的數(shù)據(jù)。一、端口控制模塊一、端口控
15、制模塊5中斷狀態(tài)標志寄存器(中斷狀態(tài)標志寄存器(PORTx_ISFR) KL25參考參考手冊手冊: P186-187一、端口控制模塊一、端口控制模塊u數(shù)字引腳模式下,每個引腳的中斷模式可以獨立配置(引腳控數(shù)字引腳模式下,每個引腳的中斷模式可以獨立配置(引腳控制寄存器的制寄存器的IRQC字段),支持低功耗模式下喚醒。字段),支持低功耗模式下喚醒。u每個端口的每個端口的PORTx_ISFR對應(yīng)對應(yīng)32個引腳,若相應(yīng)引腳的個引腳,若相應(yīng)引腳的中斷狀中斷狀態(tài)標志態(tài)標志(Interrupt Status Flag, ISF) 位為位為1,表明配置的中斷已經(jīng)被,表明配置的中斷已經(jīng)被檢測到;反之沒有。檢測到
16、;反之沒有。uPORTx_ISFR的各位具有寫的各位具有寫1清清0特性。特性。1 1寄存器映射像地址寄存器映射像地址( KL25參考參考手冊手冊: P773-775)p每個每個GPIO口均有口均有6個寄存器:個寄存器:數(shù)據(jù)輸出寄存器、輸出數(shù)據(jù)輸出寄存器、輸出置置1 1寄存器、輸出清寄存器、輸出清0 0寄存器、輸出反轉(zhuǎn)寄存器、數(shù)據(jù)輸寄存器、輸出反轉(zhuǎn)寄存器、數(shù)據(jù)輸入寄存器、數(shù)據(jù)方向寄存器入寄存器、數(shù)據(jù)方向寄存器。pPORTA口寄存器的基地址為口寄存器的基地址為400F_F000h,其他各口寄,其他各口寄存器的基地址依次加存器的基地址依次加40h。p數(shù)據(jù)輸出寄存器的地址就是口的基地址,其他寄存器數(shù)據(jù)
17、輸出寄存器的地址就是口的基地址,其他寄存器的地址依次加的地址依次加4。p所有寄存器均為所有寄存器均為32位寬度,復(fù)位時均為位寬度,復(fù)位時均為0000_0000h。二、二、GPIO模塊(模塊(KL25參考參考手冊手冊: 第第41章章)4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)模塊的編程結(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
18、寄存器寄存器(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輸出清輸出清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)教材教
19、材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ù)輸入寄存器(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模塊模塊某位為
20、某位為0,則對應(yīng)引腳為輸入;某位為,則對應(yīng)引腳為輸入;某位為1,則對應(yīng)引腳,則對應(yīng)引腳為輸出。為輸出。1 GPIO基本編程步驟基本編程步驟(1)通過端口控制模塊的)通過端口控制模塊的引腳控制寄存器引腳控制寄存器的引腳復(fù)用的引腳復(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)引腳輸出低電平或高電平。
21、亦可通過設(shè)置“輸輸出置出置1寄存器寄存器”、“輸出清輸出清0寄存器寄存器”、“輸出反轉(zhuǎn)寄輸出反轉(zhuǎn)寄存器存器”來改變引腳的狀態(tài)。來改變引腳的狀態(tài)。(4)若是輸入引腳,則通過)若是輸入引腳,則通過數(shù)據(jù)輸入寄存器數(shù)據(jù)輸入寄存器來獲得引來獲得引腳的狀態(tài)。腳的狀態(tài)。三、三、GPIO基本編程步驟與舉例基本編程步驟與舉例4.2 端口控制模塊與端口控制模塊與GPIO模塊的編程結(jié)構(gòu)模塊的編程結(jié)構(gòu) 2舉例舉例設(shè)設(shè)PORTB口的口的19腳接一個發(fā)光二極管,低電平點亮。腳接一個發(fā)光二極管,低電平點亮。(1)設(shè)置設(shè)置PORTB口的口的19引腳為引腳為GPIO功能功能 volatile uint_32 *portB_pt
22、r = (uint_32*)0 x4004A000u; volatile uint_32 *portB_PCR_19 = portB_ptr + 19; *portB_PCR_19 = 0 x00000100;(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口的
23、口的19腳接一個發(fā)光二極管,低電平點亮。腳接一個發(fā)光二極管,低電平點亮。(3)設(shè)置設(shè)置PORTB口的口的19引腳為低電平引腳為低電平 volatile uint_32 *portB_PDOR = gpioB_ptr + 0; *portB_PDOR &= (119);三、三、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)性開放性、
24、通用性和適應(yīng)性。u特別是對于底層硬件的驅(qū)動編程,只有封裝成底層驅(qū)特別是對于底層硬件的驅(qū)動編程,只有封裝成底層驅(qū)動構(gòu)件,動構(gòu)件,通過函數(shù)調(diào)用與傳參的方式實現(xiàn)對引腳底層通過函數(shù)調(diào)用與傳參的方式實現(xiàn)對引腳底層硬件的操作硬件的操作,才能使才能使軟件便于維護與移植軟件便于維護與移植,也可使開,也可使開發(fā)者專注于應(yīng)用軟件穩(wěn)定性與功能設(shè)計上。發(fā)者專注于應(yīng)用軟件穩(wěn)定性與功能設(shè)計上。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章章 第一個樣例程序及工
25、程組織第一個樣例程序及工程組織1)模塊初始化模塊初始化(gpio_init) 由于引腳具有復(fù)用特性,應(yīng)把引腳設(shè)置成由于引腳具有復(fù)用特性,應(yīng)把引腳設(shè)置成GPIO功能;應(yīng)把引腳設(shè)置成輸入或輸出功能;若是輸出,功能;應(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)。)。
26、 void gpio_set(uint_8 port, uint_8 pin, uint_8 state)二、二、GPIO驅(qū)動構(gòu)件封裝方法驅(qū)動構(gòu)件封裝方法4.3 GPIO驅(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)將引腳當前的狀態(tài)取反。將引腳當前的狀態(tài)取反。 void gpio_reverse(u
27、int_8 port, uint_8 pin)5)引腳上下拉使能函數(shù)()引腳上下拉使能函數(shù)(void gpio_pull)對于輸入,可以設(shè)定內(nèi)部上拉或下拉。對于輸入,可以設(shè)定內(nèi)部上拉或下拉。 void gpio_pull(uint_8 port,uint_8 pin, uint_8 pullselect)二、二、GPIO驅(qū)動構(gòu)件封裝方法驅(qū)動構(gòu)件封裝方法三、嵌入式設(shè)計編碼基本規(guī)范三、嵌入式設(shè)計編碼基本規(guī)范1.1.嵌入式驅(qū)動文件嵌入式驅(qū)動文件 構(gòu)件化底層驅(qū)動函數(shù)構(gòu)件化底層驅(qū)動函數(shù)的工作是對寄存器操作的基本的工作是對寄存器操作的基本封裝。在無操作系統(tǒng)下,可直接調(diào)用底層驅(qū)動函數(shù)進封裝。在無操作系統(tǒng)下,
28、可直接調(diào)用底層驅(qū)動函數(shù)進行編程。行編程。2.2.數(shù)據(jù)類型數(shù)據(jù)類型 嵌入式程序設(shè)計與一般的程序設(shè)計有所不同,與嵌入式程序設(shè)計與一般的程序設(shè)計有所不同,與嵌入式程序中打交道的大多數(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)頭文件中
29、復(fù)。在調(diào)用函數(shù)時,應(yīng)從相應(yīng)頭文件中復(fù)制函數(shù)頭,然后在參數(shù)聲明的位置上替換指定參數(shù)值。制函數(shù)頭,然后在參數(shù)聲明的位置上替換指定參數(shù)值。4.4.工程文件結(jié)構(gòu)工程文件結(jié)構(gòu) 工程文件夾中包含該工程的所有源代碼文件,下設(shè)工程文件夾中包含該工程的所有源代碼文件,下設(shè)個個子文件夾:子文件夾:Common、CPU、Doc、Drivers、FLASH、Project_Settings、Sources、swComponents。三、嵌入式設(shè)計編碼基本規(guī)范三、嵌入式設(shè)計編碼基本規(guī)范四、底層驅(qū)動構(gòu)件封裝規(guī)范概要四、底層驅(qū)動構(gòu)件封裝規(guī)范概要u所有底層驅(qū)動構(gòu)件放在工程文件夾的所有底層驅(qū)動構(gòu)件放在工程文件夾的“Driver
30、s”文件文件夾中,以構(gòu)件名命名。夾中,以構(gòu)件名命名。u每個構(gòu)件由每個構(gòu)件由頭文件頭文件(.h)與源程序文件與源程序文件(.c )組成,組成,放在以構(gòu)件名命名的文件夾中。放在以構(gòu)件名命名的文件夾中。l頭文件中僅包含對外接口函數(shù)的頭文件中僅包含對外接口函數(shù)的聲明聲明。l源程序文件中包含對外接口函數(shù)及內(nèi)部函數(shù)的源程序文件中包含對外接口函數(shù)及內(nèi)部函數(shù)的實現(xiàn)實現(xiàn)。u注意:注意:1)頭文件聲明對外接口函數(shù)的)頭文件聲明對外接口函數(shù)的順序順序與源文件實現(xiàn)對外接口函數(shù)的與源文件實現(xiàn)對外接口函數(shù)的順序應(yīng)保持一致。順序應(yīng)保持一致。2)源文件中)源文件中內(nèi)部函數(shù)內(nèi)部函數(shù)的聲明,放在對外接口函數(shù)代碼的前面,內(nèi)的聲明,
31、放在對外接口函數(shù)代碼的前面,內(nèi)部函數(shù)的實現(xiàn)放在對外接口函數(shù)代碼的后面。部函數(shù)的實現(xiàn)放在對外接口函數(shù)代碼的后面。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è)計驅(qū)動構(gòu)件設(shè)計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
32、)1GPIO驅(qū)動構(gòu)件頭文件(驅(qū)動構(gòu)件頭文件(gpio.h)1GPIO驅(qū)動構(gòu)件頭文件(驅(qū)動構(gòu)件頭文件(gpio.h)五、五、KL25的的GPIO驅(qū)動構(gòu)件設(shè)計驅(qū)動構(gòu)件設(shè)計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ù)位操作
33、宏函數(shù)p在通用頭文件中給出:在通用頭文件中給出: BSET( )、BCLR( )、BGET( )2GPIO驅(qū)動構(gòu)件說明驅(qū)動構(gòu)件說明3GPIO驅(qū)動構(gòu)件源文件驅(qū)動構(gòu)件源文件(gpio.c)五、五、KL25的的GPIO驅(qū)動構(gòu)件設(shè)計驅(qū)動構(gòu)件設(shè)計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語言工
34、程:控制小燈閃爍語言工程:控制小燈閃爍第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織一一、CW10.3簡介簡介pCodeWarrior(簡稱簡稱CW)集成開發(fā)環(huán)境是飛思卡爾集成開發(fā)環(huán)境是飛思卡爾公司推出的面向公司推出的面向嵌入式應(yīng)用嵌入式應(yīng)用開發(fā)的商業(yè)軟件工具,功開發(fā)的商業(yè)軟件工具,功能強大。能強大。pCW集成了方便開發(fā)人員使用的編輯器、源碼瀏覽器、集成了方便開發(fā)人員使用的編輯器、源碼瀏覽器、搜索引擎、構(gòu)造系統(tǒng)、調(diào)試器和工程管理器等功能模搜索引擎、構(gòu)造系統(tǒng)、調(diào)試器和工程管理器等功能模塊,提供了高度可視化操作及自動創(chuàng)建復(fù)雜嵌入式系塊,提供了高度可視化操作及自動創(chuàng)建復(fù)雜嵌入式系統(tǒng)
35、應(yīng)用的功能。統(tǒng)應(yīng)用的功能。p本書使用的是:本書使用的是:CodeWarrior Development Studio v10.3集成開發(fā)環(huán)境集成開發(fā)環(huán)境(簡稱簡稱CW10.3),它提供了工程管),它提供了工程管理、源程序編輯、編譯、連接、下載調(diào)試等功能。理、源程序編輯、編譯、連接、下載調(diào)試等功能。二、二、Light構(gòu)件的設(shè)計構(gòu)件的設(shè)計 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)件測試工程主程序
36、(main.c)4.4 第一個第一個C語言工程:控制小燈閃爍語言工程:控制小燈閃爍u嵌入式系統(tǒng)工程包含若干文件嵌入式系統(tǒng)工程包含若干文件,如:程序文件、頭文,如:程序文件、頭文件、與編譯調(diào)試相關(guān)的信息文件、工程說明文件以及件、與編譯調(diào)試相關(guān)的信息文件、工程說明文件以及工程目標代碼文件等。工程目標代碼文件等。u工程文件的合理組織,不但會提高項目的開發(fā)效率,工程文件的合理組織,不但會提高項目的開發(fā)效率,也會降低項目的維護難度。也會降低項目的維護難度。u嵌入式系統(tǒng)工程的文件組織方法嵌入式系統(tǒng)工程的文件組織方法以硬件對象為核心以硬件對象為核心來來展開,系統(tǒng)中每個對象應(yīng)包含相關(guān)的頭文件、程序文展開,系統(tǒng)
37、中每個對象應(yīng)包含相關(guān)的頭文件、程序文件及說明文件等。件及說明文件等。u以硬件對象的方式來組織文件,會使得工程結(jié)構(gòu)清晰,以硬件對象的方式來組織文件,會使得工程結(jié)構(gòu)清晰,錯誤定位方便,后期維護容易,也體現(xiàn)了嵌入式系統(tǒng)錯誤定位方便,后期維護容易,也體現(xiàn)了嵌入式系統(tǒng)軟件工程軟件工程的基本思想。的基本思想。4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析第第4 4章章 第一個樣例程序及工程組織第一個樣例程序及工程組織使用使用CW新建工程目錄后產(chǎn)生以下三個部分:新建工程目錄后產(chǎn)生以下三個部分:(1)工程配置文件夾工程配置文件夾包含與調(diào)試相關(guān)的配置文件、鏈接文件以及啟動代包
38、含與調(diào)試相關(guān)的配置文件、鏈接文件以及啟動代碼文件,對于一般的開發(fā)過程不需要改動。碼文件,對于一般的開發(fā)過程不需要改動。(2)工程輸出文件夾工程輸出文件夾包含源碼工程經(jīng)過編譯鏈接之后生成的文件,其包含源碼工程經(jīng)過編譯鏈接之后生成的文件,其中中.elf文件或文件或.hex文件為生成的程序機器碼文件,可下載文件為生成的程序機器碼文件,可下載到目標板上運行。到目標板上運行。(3)源程序文件夾源程序文件夾包含通用函數(shù)、驅(qū)動構(gòu)件文件、主程序文件以及中包含通用函數(shù)、驅(qū)動構(gòu)件文件、主程序文件以及中斷服務(wù)例程文件等,這些文件是工程開發(fā)人員進行編程斷服務(wù)例程文件等,這些文件是工程開發(fā)人員進行編程的主要對象。的主要
39、對象。一、一、CW10.3開發(fā)環(huán)境下工程文件組織框架開發(fā)環(huán)境下工程文件組織框架4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析工程工程文件文件編譯、連接編譯、連接目標代碼文件目標代碼文件(.(.elf) )Intel HEX文件文件(.hex) )存儲器分配文件存儲器分配文件(.map(.map)CW生成的文件生成的文件一、一、CW10.3開發(fā)環(huán)境下工程文件組織框架開發(fā)環(huán)境下工程文件組織框架芯片上電啟動后,首先查詢保存在芯片上電啟動后,首先查詢保存在Flash存儲區(qū)首端的存儲區(qū)首端的中斷中斷向量表向量表,取出第一個表項的內(nèi)容設(shè)定為,取出第一個表項的內(nèi)容設(shè)定為堆
40、棧初始化指針堆棧初始化指針,取出,取出第二個表項的內(nèi)容作為第二個表項的內(nèi)容作為啟動函數(shù)(啟動函數(shù)(startup)的入口地址)的入口地址。二、上電執(zhí)行過程二、上電執(zhí)行過程4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析三、鏈接文件分析三、鏈接文件分析4.5 工程文件組織框架與工程文件組織框架與第一個第一個C語言工程分析語言工程分析三、鏈接文件分析三、鏈接文件分析4.6 第一個匯編語言工程:控制小燈閃爍第一個匯編語言工程:控制小燈閃爍l 相對于相對于C語言編程,匯編在編程的直觀性、編程效率、語言編程,匯編在編程的直觀性、編程效率、以及可讀性等方面都有所欠缺,但掌
41、握基本的匯編語言以及可讀性等方面都有所欠缺,但掌握基本的匯編語言編程方法是嵌入式學(xué)習(xí)的基本功。編程方法是嵌入式學(xué)習(xí)的基本功。l 匯編工程通常包含芯片相關(guān)的程序框架文件、軟件構(gòu)匯編工程通常包含芯片相關(guān)的程序框架文件、軟件構(gòu)件文件、工程設(shè)置文件、主程序文件及抽象構(gòu)件文件等。件文件、工程設(shè)置文件、主程序文件及抽象構(gòu)件文件等。l匯編工程類似匯編工程類似C工程,仍然工程,仍然按構(gòu)件方式進行組織按構(gòu)件方式進行組織。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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度基礎(chǔ)地質(zhì)勘查服務(wù)競爭策略分析報告
- 二零二五年度違約民事起訴狀合同起草技巧與法律適用3篇
- 2024-2025學(xué)年新教材高中數(shù)學(xué)第十章概率單元質(zhì)量評估含解析新人教A版必修第二冊
- 2025年度文化旅游項目招投標與合同管理規(guī)范解讀3篇
- 2024金融行業(yè)拓展訓(xùn)練合同
- 2025年度新能源居間服務(wù)合同范本英文版3篇
- 二零二五年度留守兒童特殊教育需求與個性化支持服務(wù)合同4篇
- 2025年度高科技企業(yè)派遣研發(fā)人員合同范本
- 2025版高性能鋁合金模板制造與租賃服務(wù)合同詳盡條款全文4篇
- 2025年度家庭經(jīng)濟困難子女撫養(yǎng)費減免專項合同
- 長亭送別完整版本
- 《鐵路軌道維護》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 2024年安徽省公務(wù)員錄用考試《行測》真題及解析
- 你比我猜題庫課件
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險評估報告
- 無人駕駛航空器安全操作理論復(fù)習(xí)測試附答案
- 2024年山東省青島市中考語文試卷(附答案)
評論
0/150
提交評論