第一个样例程序及工程组织._第1页
第一个样例程序及工程组织._第2页
第一个样例程序及工程组织._第3页
第一个样例程序及工程组织._第4页
第一个样例程序及工程组织._第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目的要求:目的要求:1.1.了解了解通用通用I/O基本概念及连接方法、底层驱动基本概念及连接方法、底层驱动含义及编程方法、含义及编程方法、CodeWarrior10.3开发环境;开发环境;2.2.理解理解KL25的端口控制模块与的端口控制模块与GPIO模块的编程模块的编程结构、直接给映像寄存器地址赋值的方法;结构、直接给映像寄存器地址赋值的方法;3.3.掌握掌握构件化编程框架、构件化编程框架、GPIO构件和构件和Light构件构件编程方法及工程测试方法、文件组织与分析、编程方法及工程测试方法、文件组织与分析、上电执行过程。上电执行过程。第第4章章 第一个样例程序及工程组织第一个样例程序及工程组

2、织嵌入式系统基础嵌入式系统基础第第4章章 第一个样例程序及工程组织第一个样例程序及工程组织4.1 通用通用I/O接口基本概念及连接方法接口基本概念及连接方法4.2 端口控制模块与端口控制模块与GPIO模块的编程结构模块的编程结构4.3 GPIO驱动构件封装方式与封装规范驱动构件封装方式与封装规范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 大多数大多数GPIO引脚可以通过引脚可以通过编程编程来设定其工作来设定其工作方式为方式为输入输入或或输出输出,称之为,称之为双向双向I/O。p GPIO接口一般应具备:接口一般应具备: 放置放置输入或输出控制字输入或输出控制字的寄存器的寄存器放置放置工作方式控制字工作方式控制字的寄存器的寄存器放置放置要交换数据要交换数据的寄存器的寄存器放置反映放置反映工作状态工作状态的寄存器的寄存器4.1 通用通用I/O接口基本概念及连接方法接口基本概念及连接方法三、输入引脚的基本接法三、输入引脚的基本接法若若MCU的某个引脚通过的某个引脚

5、通过一个电阻接到一个电阻接到电源电源(Vcc)上,这个电阻被称为上,这个电阻被称为“上上拉电阻拉电阻”。若若MCU的某个引脚通过的某个引脚通过一个电阻接到一个电阻接到地地(GND)上,则相应的电阻被称为上,则相应的电阻被称为“下拉电阻下拉电阻”。悬空悬空的芯片引脚被上拉的芯片引脚被上拉电阻或下拉电阻初始化为电阻或下拉电阻初始化为高电平或低电平。高电平或低电平。4.1 通用通用I/O接口基本概念及连接方法接口基本概念及连接方法u作为通用输入引脚,是作为通用输入引脚,是通通过该引脚向过该引脚向MCU内部输入内部输入高电平或低电平高电平或低电平来驱动器来驱动器件工作。件工作。三、输入引脚的基本接法三

6、、输入引脚的基本接法四、输出引脚的基本接法四、输出引脚的基本接法u作为通用输出引脚,作为通用输出引脚,MCU内部内部程序向该引脚输出高电平或低程序向该引脚输出高电平或低电平电平来驱动器件工作。来驱动器件工作。u右图中:右图中:1)O1引脚是发光二极管引脚是发光二极管LED的驱的驱动引脚:当动引脚:当O1引脚输出高电平引脚输出高电平时,时,LED不亮;当不亮;当O1引脚输出引脚输出低电平时,低电平时,LED点亮。点亮。2)O2引脚接蜂鸣器驱动电路:当引脚接蜂鸣器驱动电路:当O2脚输出高电平时,蜂鸣器响;脚输出高电平时,蜂鸣器响;O2脚输出低电平时,蜂鸣器不脚输出低电平时,蜂鸣器不响。响。4.1

7、通用通用I/O接口基本概念及连接方法接口基本概念及连接方法一、端口控制模块(一、端口控制模块(KL25参考参考手册手册: 第第11章章)uKL25的大部分引脚具有复用功能,可以通过端口控制的大部分引脚具有复用功能,可以通过端口控制模块模块(Port control and interrupts,PORT)提供的)提供的寄寄存器编程存器编程指定其为某一具体功能。指定其为某一具体功能。uPORT模块内含模块内含3类寄存器:类寄存器:引脚控制寄存器引脚控制寄存器(Pin Control Register, PCR),),全局引脚控制寄存器全局引脚控制寄存器(Global Pin Control Re

8、gister, GPCR)、)、中断状态标中断状态标志寄存器志寄存器(Interrupt Status Flag Register, ISFR)。)。u每个寄存器都是每个寄存器都是32位位的。的。4.2 端口控制模块与端口控制模块与GPIO模块的编程结构模块的编程结构第第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个个中断状态标志寄存器中断状态标志寄存器 PORTx_ISFR(1)引脚控制寄存器引脚控制寄存器p端口端口x的基地址的基地址=4004_9000+x*1000(x=AE,对应对应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,对应,对应04)p全局引脚控制寄存器(高)全局引脚控制寄存器(高)PORTx_GPCHR的地址的地址=4004_9084+x*1000 (x=AE,对应,对应04)(3)中断状态标志寄存器中断状态标志寄存器 p中断状态标志寄存器的地址中断状态标志寄存器的地址=4004

11、_90A0+x*1000(x=AE,对应,对应04)1、寄存器映像地址、寄存器映像地址2相关名词解释相关名词解释(1)模拟引脚模拟引脚(Analog Pin):):是指不能够配置成是指不能够配置成GPIO的引脚,的引脚,如如RESET、EXTAL及及XTAL等引脚。等引脚。(2)数字引脚数字引脚(Digital Pin):):是指能够被配置成是指能够被配置成GPIO的引脚。的引脚。(3)无源滤波器无源滤波器(Passive Filter):):是由电容器、电感器和电是由电容器、电感器和电阻器适当组合而成,并兼有无功补偿和调压功能的滤波器。阻器适当组合而成,并兼有无功补偿和调压功能的滤波器。(4

12、)引脚驱动能力引脚驱动能力(Drive Strength):):是指引脚放出或吸入电是指引脚放出或吸入电流的承受能力,一般用流的承受能力,一般用mA单位度量。单位度量。(5)转换速率转换速率(Slew Rate):):是指电压在高低电平间转换的时是指电压在高低电平间转换的时间间隔,一般用间间隔,一般用ns单位度量。单位度量。(6)引脚复用槽引脚复用槽(Pin Muxing Slot):):是指信号复用装置与引是指信号复用装置与引脚之间的接口,引脚通过连接不同的信号复用槽可以配置成不脚之间的接口,引脚通过连接不同的信号复用槽可以配置成不同的功能。同的功能。(7)写写1清清0(W1C):):是指对

13、某位写是指对某位写1而使得该位清而使得该位清0。一、端口控制模块一、端口控制模块3引脚控制寄存器引脚控制寄存器(PORTx_PCRn)其中其中“X”表示复位后状态不确定。有关功能说明请见表示复位后状态不确定。有关功能说明请见教材教材P65-P66和和KL25参考参考手册手册: P183-185。一、端口控制模块一、端口控制模块高高16位位低低16位位4全局引脚控制寄存器全局引脚控制寄存器(PORTx_GPCLR、PORTx_GPCHR ) KL25参考参考手册手册: P185-186l全局引脚全局引脚写使能写使能字段字段(Global Pin Write Enable,GPWE)l全局引脚全局

14、引脚写数据写数据字段字段(Global Pin Write Data,GPWD)l将每个端口的将每个端口的32个引脚控制寄存器分为两组:个引脚控制寄存器分为两组:低引脚控制寄存低引脚控制寄存器组(器组(n=150)和和高引脚控制寄存器组(高引脚控制寄存器组(n=3116)。lPORTx_GPCLR配置低引脚控制寄存器组配置低引脚控制寄存器组,PORTx_GPCHR配配置高引脚控制寄存器组置高引脚控制寄存器组。l GPWE字段对应字段对应16个个引脚控制寄存器引脚控制寄存器,GPWD字段为向相应字段为向相应引脚控制寄存器低引脚控制寄存器低16位写入的数据。位写入的数据。一、端口控制模块一、端口控

15、制模块5中断状态标志寄存器(中断状态标志寄存器(PORTx_ISFR) KL25参考参考手册手册: P186-187一、端口控制模块一、端口控制模块u数字引脚模式下,每个引脚的中断模式可以独立配置(引脚控数字引脚模式下,每个引脚的中断模式可以独立配置(引脚控制寄存器的制寄存器的IRQC字段),支持低功耗模式下唤醒。字段),支持低功耗模式下唤醒。u每个端口的每个端口的PORTx_ISFR对应对应32个引脚,若相应引脚的个引脚,若相应引脚的中断状中断状态标志态标志(Interrupt Status Flag, ISF) 位为位为1,表明配置的中断已经被,表明配置的中断已经被检测到;反之没有。检测到

16、;反之没有。uPORTx_ISFR的各位具有写的各位具有写1清清0特性。特性。1 1寄存器映射像地址寄存器映射像地址( KL25参考参考手册手册: P773-775)p每个每个GPIO口均有口均有6个寄存器:个寄存器:数据输出寄存器、输出数据输出寄存器、输出置置1 1寄存器、输出清寄存器、输出清0 0寄存器、输出反转寄存器、数据输寄存器、输出反转寄存器、数据输入寄存器、数据方向寄存器入寄存器、数据方向寄存器。pPORTA口寄存器的基地址为口寄存器的基地址为400F_F000h,其他各口寄,其他各口寄存器的基地址依次加存器的基地址依次加40h。p数据输出寄存器的地址就是口的基地址,其他寄存器数据

17、输出寄存器的地址就是口的基地址,其他寄存器的地址依次加的地址依次加4。p所有寄存器均为所有寄存器均为32位宽度,复位时均为位宽度,复位时均为0000_0000h。二、二、GPIO模块(模块(KL25参考参考手册手册: 第第41章章)4.2 端口控制模块与端口控制模块与GPIO模块的编程结构模块的编程结构2数据输出寄存器数据输出寄存器(GPIOx_PDOR)教材教材P68KL25参考参考手册手册: P775二、二、GPIO模块模块引脚配置为输出时:某位为引脚配置为输出时:某位为0,则对应引脚为低电平;,则对应引脚为低电平;某位为某位为1,则对应引脚为高电平。,则对应引脚为高电平。3输出置输出置1

18、寄存器寄存器(GPIOx_PSOR)教材教材P68KL25参考参考手册手册: P776二、二、GPIO模块模块某位为某位为0,则不改变数据输出寄存器相应位;某位为,则不改变数据输出寄存器相应位;某位为1,则将数据输出寄存器相应位置则将数据输出寄存器相应位置1。4输出清输出清0 0寄存器寄存器(GPIOx_PCOR)教材教材P68KL25参考参考手册手册: P776二、二、GPIO模块模块某位为某位为0,则不改变数据输出寄存器相应位;某位为,则不改变数据输出寄存器相应位;某位为1,则将数据输出寄存器相应位清则将数据输出寄存器相应位清0。5输出反转寄存器输出反转寄存器(GPIOx_PTOR)教材教

19、材P68KL25参考参考手册手册: P777二、二、GPIO模块模块某位为某位为0,则不改变数据输出寄存器相应位;某位为,则不改变数据输出寄存器相应位;某位为1,则将数据输出寄存器相应位取反。则将数据输出寄存器相应位取反。6数据输入寄存器数据输入寄存器(GPIOx_PDIR)教材教材P68KL25参考参考手册手册: P777二、二、GPIO模块模块某位为某位为0,则对应引脚为低电平;某位为,则对应引脚为低电平;某位为1,则对应引,则对应引脚为高电平。脚为高电平。7数据方向寄存器数据方向寄存器(GPIOx_PDDR)教材教材P68KL25参考参考手册手册: P778二、二、GPIO模块模块某位为

20、某位为0,则对应引脚为输入;某位为,则对应引脚为输入;某位为1,则对应引脚,则对应引脚为输出。为输出。1 GPIO基本编程步骤基本编程步骤(1)通过端口控制模块的)通过端口控制模块的引脚控制寄存器引脚控制寄存器的引脚复用的引脚复用控制字段(控制字段(MUX)设定其为)设定其为GPIO功能。功能。(2)通过)通过GPIO模块相应口的模块相应口的数据方向寄存器数据方向寄存器来指定相来指定相应引脚为输入或输出功能。应引脚为输入或输出功能。(3)若是输出引脚,则通过设置)若是输出引脚,则通过设置数据输出寄存器数据输出寄存器来指来指定相应引脚输出低电平或高电平。亦可通过设置定相应引脚输出低电平或高电平。

21、亦可通过设置“输输出置出置1寄存器寄存器”、“输出清输出清0寄存器寄存器”、“输出反转寄输出反转寄存器存器”来改变引脚的状态。来改变引脚的状态。(4)若是输入引脚,则通过)若是输入引脚,则通过数据输入寄存器数据输入寄存器来获得引来获得引脚的状态。脚的状态。三、三、GPIO基本编程步骤与举例基本编程步骤与举例4.2 端口控制模块与端口控制模块与GPIO模块的编程结构模块的编程结构 2举例举例设设PORTB口的口的19脚接一个发光二极管,低电平点亮。脚接一个发光二极管,低电平点亮。(1)设置设置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)设置设置PORTB口的口的19引脚为输出功能引脚为输出功能 volatile uint_32 *gpioB_ptr = (uint_32*)0 x400FF040u; volatile uint_32 *portB_PDDR = gpioB_ptr + 5; *portB_PDDR |= (119);三、三、GPIO基本编程步骤与举例基本编程步骤与举例 2举例举例设设PORTB口的

23、口的19脚接一个发光二极管,低电平点亮。脚接一个发光二极管,低电平点亮。(3)设置设置PORTB口的口的19引脚为低电平引脚为低电平 volatile uint_32 *portB_PDOR = gpioB_ptr + 0; *portB_PDOR &= (119);三、三、GPIO基本编程步骤与举例基本编程步骤与举例一、制作一、制作GPIO驱动构件的必要性驱动构件的必要性u将软件构件技术应用到嵌入式软件开发中,可以大大将软件构件技术应用到嵌入式软件开发中,可以大大提高嵌入式开发的效率与稳定性,可以使软件具有更提高嵌入式开发的效率与稳定性,可以使软件具有更好的好的开放性、通用性和适应性开放性、

24、通用性和适应性。u特别是对于底层硬件的驱动编程,只有封装成底层驱特别是对于底层硬件的驱动编程,只有封装成底层驱动构件,动构件,通过函数调用与传参的方式实现对引脚底层通过函数调用与传参的方式实现对引脚底层硬件的操作硬件的操作,才能使才能使软件便于维护与移植软件便于维护与移植,也可使开,也可使开发者专注于应用软件稳定性与功能设计上。发者专注于应用软件稳定性与功能设计上。u底层驱动构件的封装,也为在底层驱动构件的封装,也为在操作系统下操作系统下对底层硬件对底层硬件的操作提供了基础。的操作提供了基础。4.3 GPIO驱动构件封装方法与封装规范驱动构件封装方法与封装规范第第4 4章章 第一个样例程序及工

25、程组织第一个样例程序及工程组织1)模块初始化模块初始化(gpio_init) 由于引脚具有复用特性,应把引脚设置成由于引脚具有复用特性,应把引脚设置成GPIO功能;应把引脚设置成输入或输出功能;若是输出,功能;应把引脚设置成输入或输出功能;若是输出,还要给出引脚的初始状态。还要给出引脚的初始状态。viod gpio_init(uint_8 port, uint_8 pin, uint_8 dir, uint_8 state)2)设置引脚状态设置引脚状态(gpio_set) 对于输出,应设置引脚是输出高电平(逻辑对于输出,应设置引脚是输出高电平(逻辑1)还是低电平(逻辑还是低电平(逻辑0)。)。

26、 void gpio_set(uint_8 port, uint_8 pin, uint_8 state)二、二、GPIO驱动构件封装方法驱动构件封装方法4.3 GPIO驱动构件封装方法与封装规范驱动构件封装方法与封装规范3)获得引脚状态()获得引脚状态(gpio_get)对于输入,应获得引脚的状态是高电平还是低电平。对于输入,应获得引脚的状态是高电平还是低电平。uint_8 gpio_get(uint_8 port, uint_8 pin)4)引脚状态反转()引脚状态反转(void gpio_reverse)将引脚当前的状态取反。将引脚当前的状态取反。 void gpio_reverse(u

27、int_8 port, uint_8 pin)5)引脚上下拉使能函数()引脚上下拉使能函数(void gpio_pull)对于输入,可以设定内部上拉或下拉。对于输入,可以设定内部上拉或下拉。 void gpio_pull(uint_8 port,uint_8 pin, uint_8 pullselect)二、二、GPIO驱动构件封装方法驱动构件封装方法三、嵌入式设计编码基本规范三、嵌入式设计编码基本规范1.1.嵌入式驱动文件嵌入式驱动文件 构件化底层驱动函数构件化底层驱动函数的工作是对寄存器操作的基本的工作是对寄存器操作的基本封装。在无操作系统下,可直接调用底层驱动函数进封装。在无操作系统下,

28、可直接调用底层驱动函数进行编程。行编程。2.2.数据类型数据类型 嵌入式程序设计与一般的程序设计有所不同,与嵌入式程序设计与一般的程序设计有所不同,与嵌入式程序中打交道的大多数都是底层硬件的存储单嵌入式程序中打交道的大多数都是底层硬件的存储单元或是寄存器,所以这里将需要的数据类型定义在元或是寄存器,所以这里将需要的数据类型定义在“common.h”文件中。文件中。4.3 GPIO驱动构件封装方法与封装规范驱动构件封装方法与封装规范3.3.函数函数 为嵌入式设备编写设备驱动程序,涉及为嵌入式设备编写设备驱动程序,涉及驱动接口函驱动接口函数和自定义函数数和自定义函数。在调用函数时,应从相应头文件中

29、复。在调用函数时,应从相应头文件中复制函数头,然后在参数声明的位置上替换指定参数值。制函数头,然后在参数声明的位置上替换指定参数值。4.4.工程文件结构工程文件结构 工程文件夹中包含该工程的所有源代码文件,下设工程文件夹中包含该工程的所有源代码文件,下设个个子文件夹:子文件夹:Common、CPU、Doc、Drivers、FLASH、Project_Settings、Sources、swComponents。三、嵌入式设计编码基本规范三、嵌入式设计编码基本规范四、底层驱动构件封装规范概要四、底层驱动构件封装规范概要u所有底层驱动构件放在工程文件夹的所有底层驱动构件放在工程文件夹的“Driver

30、s”文件文件夹中,以构件名命名。夹中,以构件名命名。u每个构件由每个构件由头文件头文件(.h)与源程序文件与源程序文件(.c )组成,组成,放在以构件名命名的文件夹中。放在以构件名命名的文件夹中。l头文件中仅包含对外接口函数的头文件中仅包含对外接口函数的声明声明。l源程序文件中包含对外接口函数及内部函数的源程序文件中包含对外接口函数及内部函数的实现实现。u注意:注意:1)头文件声明对外接口函数的)头文件声明对外接口函数的顺序顺序与源文件实现对外接口函数的与源文件实现对外接口函数的顺序应保持一致。顺序应保持一致。2)源文件中)源文件中内部函数内部函数的声明,放在对外接口函数代码的前面,内的声明,

31、放在对外接口函数代码的前面,内部函数的实现放在对外接口函数代码的后面。部函数的实现放在对外接口函数代码的后面。3)制作构件时,要考虑移植性,要有)制作构件时,要考虑移植性,要有规范规范的编码风格与注释,不的编码风格与注释,不使用使用全局变量全局变量。4.3 GPIO驱动构件封装方法与封装规范驱动构件封装方法与封装规范五五、KL25的的GPIO驱动构件设计驱动构件设计1GPIO驱动构件头文件驱动构件头文件(gpio.h)4.3 GPIO驱动构件封装方法与封装规范驱动构件封装方法与封装规范1GPIO驱动构件头文件(驱动构件头文件(gpio.h)1GPIO驱动构件头文件(驱动构件头文件(gpio.h

32、)1GPIO驱动构件头文件(驱动构件头文件(gpio.h)1GPIO驱动构件头文件(驱动构件头文件(gpio.h)五、五、KL25的的GPIO驱动构件设计驱动构件设计2GPIO驱动构件说明驱动构件说明 1)两个结构体类型两个结构体类型1)两个结构体类型两个结构体类型1)两个结构体类型两个结构体类型2GPIO驱动构件说明驱动构件说明2)端口模块各口的基地址端口模块各口的基地址2GPIO驱动构件说明驱动构件说明3)GPIO模块各口的基地址模块各口的基地址2GPIO驱动构件说明驱动构件说明4)引脚控制寄存器的各位及操作引脚控制寄存器的各位及操作2GPIO驱动构件说明驱动构件说明5)位操作宏函数位操作

33、宏函数p在通用头文件中给出:在通用头文件中给出: BSET( )、BCLR( )、BGET( )2GPIO驱动构件说明驱动构件说明3GPIO驱动构件源文件驱动构件源文件(gpio.c)五、五、KL25的的GPIO驱动构件设计驱动构件设计3GPIO驱动构件源文件(驱动构件源文件(gpio.c)3GPIO驱动构件源文件(驱动构件源文件(gpio.c)3GPIO驱动构件源文件(驱动构件源文件(gpio.c)3GPIO驱动构件源文件(驱动构件源文件(gpio.c)3GPIO驱动构件源文件(驱动构件源文件(gpio.c)3GPIO驱动构件源文件(驱动构件源文件(gpio.c)4.4 第一个第一个C语言工

34、程:控制小灯闪烁语言工程:控制小灯闪烁第第4 4章章 第一个样例程序及工程组织第一个样例程序及工程组织一一、CW10.3简介简介pCodeWarrior(简称简称CW)集成开发环境是飞思卡尔集成开发环境是飞思卡尔公司推出的面向公司推出的面向嵌入式应用嵌入式应用开发的商业软件工具,功开发的商业软件工具,功能强大。能强大。pCW集成了方便开发人员使用的编辑器、源码浏览器、集成了方便开发人员使用的编辑器、源码浏览器、搜索引擎、构造系统、调试器和工程管理器等功能模搜索引擎、构造系统、调试器和工程管理器等功能模块,提供了高度可视化操作及自动创建复杂嵌入式系块,提供了高度可视化操作及自动创建复杂嵌入式系统

35、应用的功能。统应用的功能。p本书使用的是:本书使用的是:CodeWarrior Development Studio v10.3集成开发环境集成开发环境(简称简称CW10.3),它提供了工程管),它提供了工程管理、源程序编辑、编译、连接、下载调试等功能。理、源程序编辑、编译、连接、下载调试等功能。二、二、Light构件的设计构件的设计 1Light构件的头文件构件的头文件(light.h) 2Light构件的源文件构件的源文件(light.c)4.4 第一个第一个C语言工程:控制小灯闪烁语言工程:控制小灯闪烁三、三、Light构件的测试构件的测试 Light构件测试工程主程序构件测试工程主程序

36、(main.c)4.4 第一个第一个C语言工程:控制小灯闪烁语言工程:控制小灯闪烁u嵌入式系统工程包含若干文件嵌入式系统工程包含若干文件,如:程序文件、头文,如:程序文件、头文件、与编译调试相关的信息文件、工程说明文件以及件、与编译调试相关的信息文件、工程说明文件以及工程目标代码文件等。工程目标代码文件等。u工程文件的合理组织,不但会提高项目的开发效率,工程文件的合理组织,不但会提高项目的开发效率,也会降低项目的维护难度。也会降低项目的维护难度。u嵌入式系统工程的文件组织方法嵌入式系统工程的文件组织方法以硬件对象为核心以硬件对象为核心来来展开,系统中每个对象应包含相关的头文件、程序文展开,系统

37、中每个对象应包含相关的头文件、程序文件及说明文件等。件及说明文件等。u以硬件对象的方式来组织文件,会使得工程结构清晰,以硬件对象的方式来组织文件,会使得工程结构清晰,错误定位方便,后期维护容易,也体现了嵌入式系统错误定位方便,后期维护容易,也体现了嵌入式系统软件工程软件工程的基本思想。的基本思想。4.5 工程文件组织框架与工程文件组织框架与第一个第一个C语言工程分析语言工程分析第第4 4章章 第一个样例程序及工程组织第一个样例程序及工程组织使用使用CW新建工程目录后产生以下三个部分:新建工程目录后产生以下三个部分:(1)工程配置文件夹工程配置文件夹包含与调试相关的配置文件、链接文件以及启动代包

38、含与调试相关的配置文件、链接文件以及启动代码文件,对于一般的开发过程不需要改动。码文件,对于一般的开发过程不需要改动。(2)工程输出文件夹工程输出文件夹包含源码工程经过编译链接之后生成的文件,其包含源码工程经过编译链接之后生成的文件,其中中.elf文件或文件或.hex文件为生成的程序机器码文件,可下载文件为生成的程序机器码文件,可下载到目标板上运行。到目标板上运行。(3)源程序文件夹源程序文件夹包含通用函数、驱动构件文件、主程序文件以及中包含通用函数、驱动构件文件、主程序文件以及中断服务例程文件等,这些文件是工程开发人员进行编程断服务例程文件等,这些文件是工程开发人员进行编程的主要对象。的主要

39、对象。一、一、CW10.3开发环境下工程文件组织框架开发环境下工程文件组织框架4.5 工程文件组织框架与工程文件组织框架与第一个第一个C语言工程分析语言工程分析工程工程文件文件编译、连接编译、连接目标代码文件目标代码文件(.(.elf) )Intel HEX文件文件(.hex) )存储器分配文件存储器分配文件(.map(.map)CW生成的文件生成的文件一、一、CW10.3开发环境下工程文件组织框架开发环境下工程文件组织框架芯片上电启动后,首先查询保存在芯片上电启动后,首先查询保存在Flash存储区首端的存储区首端的中断中断向量表向量表,取出第一个表项的内容设定为,取出第一个表项的内容设定为堆

40、栈初始化指针堆栈初始化指针,取出,取出第二个表项的内容作为第二个表项的内容作为启动函数(启动函数(startup)的入口地址)的入口地址。二、上电执行过程二、上电执行过程4.5 工程文件组织框架与工程文件组织框架与第一个第一个C语言工程分析语言工程分析三、链接文件分析三、链接文件分析4.5 工程文件组织框架与工程文件组织框架与第一个第一个C语言工程分析语言工程分析三、链接文件分析三、链接文件分析4.6 第一个汇编语言工程:控制小灯闪烁第一个汇编语言工程:控制小灯闪烁l 相对于相对于C语言编程,汇编在编程的直观性、编程效率、语言编程,汇编在编程的直观性、编程效率、以及可读性等方面都有所欠缺,但掌

41、握基本的汇编语言以及可读性等方面都有所欠缺,但掌握基本的汇编语言编程方法是嵌入式学习的基本功。编程方法是嵌入式学习的基本功。l 汇编工程通常包含芯片相关的程序框架文件、软件构汇编工程通常包含芯片相关的程序框架文件、软件构件文件、工程设置文件、主程序文件及抽象构件文件等。件文件、工程设置文件、主程序文件及抽象构件文件等。l汇编工程类似汇编工程类似C工程,仍然工程,仍然按构件方式进行组织按构件方式进行组织。l汇编工程仅包含一个汇编主程序文件(汇编工程仅包含一个汇编主程序文件(main.s)。)。l汇编程序的主体要尽可能简洁,程序中的其余功能应汇编程序的主体要尽可能简洁,程序中的其余功能应尽量由子程序去完成,尽量由子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论