ImageVerifierCode 换一换
格式:PPT , 页数:402 ,大小:14.40MB ,
文档编号:3394300      下载积分:32 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3394300.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(配套课件-嵌入式系统基础项目化教程.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

配套课件-嵌入式系统基础项目化教程.ppt

1、嵌入式系统基础项目化教程项目1 初识嵌入式系统1.1 项目内容与要求1.2 项目背景知识1.2.1 1.2.1 嵌入式系统定义嵌入式系统定义1.2.2 1.2.2 嵌入式系统的发展与现嵌入式系统的发展与现状状1.2.3 1.2.3 嵌入式系统的嵌入式系统的特点特点1.2.4 1.2.4 嵌入式系统的嵌入式系统的应用领域应用领域1.2.5 1.2.5 嵌入式系统的嵌入式系统的开发流程开发流程项目1 初识嵌入式系统1.1 项目内容与要求(1)了解嵌入式系统定义、发展进程。(2)了解嵌入式系统微处理器特点。(3)了解嵌入式系统相关术语。项目1 初识嵌入式系统1.2 项目背景知识 嵌入式系统是以应用为

2、中心,以计算机技术为基础,并且软硬件可裁减,适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序四个部分组成,用于实现对其他设备的控制、监视或管理等目标。1.2.1 1.2.1 嵌入式系统定嵌入式系统定义义项目1 初识嵌入式系统 1960年,在通信系统上,首次采用存储式程序控制系统(Stored Program Control)对电子机械电话交换进行控制,这种控制系统就是嵌入式系统的雏形。嵌入式系统的概念是在1970年左右出现的,当时大部分软件设计都是由汇编语言完成的,而且这些汇编程序只能用于某一种固

3、定的微处理器,因此嵌入式系统的发展和应用受到了一定的约束。随着集成电路技术的发展,嵌入式系统的体系结构经历了由CISC(复杂指令集计算机)到RISC(精减指令集计算机)和Compact RISC的转变。在处理字长上由4位发展到8位、16位、32位、64位;寻址范围不断扩大,从64KB发展到16MB,直至4GB;指令执行速度也由最初的0.1MIPS提高到2000MIPS。1.2.2 1.2.2 嵌入式系统的发展与现嵌入式系统的发展与现状状项目1 初识嵌入式系统 嵌入式系统的核心是处理器,主要有嵌入式微处理器(EMPU,Embedded MicroProcessor Unit)、嵌入式DSP处理器

4、(EDSP,Embedded Digital Signal Processor)、嵌入式片上系统(ESoC,EmbeddedSystem on Chip)、嵌入式微控制器(EMCU,Embedded、System-MicroController Unit)等几种类型。可以预见,嵌入式系统将朝着以下趋势发展:(1)系统化。(2)微控制器功能越来越强大。(3)网络化。项目1 初识嵌入式系统1.2.3 1.2.3 嵌入式系统的嵌入式系统的特特点点(1)嵌入式系统通常是面向用户、面向产品、面向特定应用的。(2)嵌入式系统是先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物。嵌入式系

5、统产品一旦进入市场,就具有较长的生命周期。(3)嵌入式系统对于程序的质量,特别是可靠性,有着较高的要求。项目1 初识嵌入式系统 嵌入式系统本身不具备自主开发能力,必须有一套开发工具和环境才能对其进行开发。目前的开发工具平台主要分为以下几类:(1)实时在线仿真系统ICE(2)高级语言编译器源(3)程序模拟器(Simulator)(4)实时多任务操作系统RTOS其中,RTOS是嵌入式系统的软件开发平台,它的引入解决了随着嵌入式系统中软件比重不断上升、应用程序越来越大而带来的嵌入式软件开发标准化的难题。项目1 初识嵌入式系统1.2.4 1.2.4 嵌入式系统的嵌入式系统的应用应用领域领域嵌入式系统技

6、术具有非常广阔的应用前景,其应用领域如下:(1)工业控制(2)交通运输(3)信息家电(4)POS网络和电子商务(5)环境监测(6)机器人项目1 初识嵌入式系统1.2.5 1.2.5 嵌入式系统的嵌入式系统的开发开发流程流程 嵌入式系统开发的一般流程主要包括系统需求分析(要求有严格规范的技术要求)、体系结构设计、软硬件协同设计、系统集成和系统测试,最后得到最终产品。1.系统需求分析 系统需求分析是指确定设计任务和设计目标,提炼出设计规格说明书,作为正式设计的指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入/输出信号、操作方式等;非功能性需求则是

7、对系统性能、成本、功耗、体积、重量等的要求。项目1 初识嵌入式系统 2.体系结构设计 体系结构设计是指描述系统如何实现所述的功能和非功能的需求,包括对硬件、软件和执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。3.软硬件协同设计 软硬件协同设计是指基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。嵌入式系统的设计工作大部分都集中在软件设计上,面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。项目1 初识嵌入式系统 4系统集成 系统集成是指把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设

8、计过程中的错误。5系统测试 系统测试是指对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。嵌入式系统基础项目化教程项目2 嵌入式系统C语言知识要点2.1 项目内容与要求2.2 嵌入式系统C语言数据类型2.2.1 2.2.1 基本数据类型基本数据类型2.2.2 2.2.2 构造类型构造类型2.2.3 2.2.3 运算符运算符2.2.4 2.2.4 流程控制流程控制2.2.5 2.2.5 函数函数2.2.6 2.2.6 编译预处理编译预处理项目2 嵌入式系统C语言知识要点2.1 项目内容与要求(1)了解嵌入式系统定义、发展进程及特点。(2)了解嵌入式系统相关术语。(3)熟悉嵌入式系统

9、开发常用C语言语法概要。2.2 嵌入式系统C语言数据类型项目2 嵌入式系统C语言知识要点 数据类型本质上是规定数据在内存中占据多少个字节。嵌入式系统C语言的数据类型有基本类型和构造类型两大类。(1)signed char,有符号字节型,位长为8位,字节数为1,数据范围为-128+127。(2)unsigned char,无符号字节型,位长为8位,字节数为1,数据范围为0255。(3)signed short,有符号短整型,位长为16位,字节数为2,数据范围为-32768+32767。(4)unsigned short,无符号短整型,位长为16位,字节数为2,数据范围为065535。(5)sig

10、ned int,有符号短整型,位长为16位,字节数为2,数据范围为-32768+32767。(6)unsigned int,无符号短整型,位长为16位,字节数为2,数据范围为065535。(7)signed long,有符号长整型,位长为32位,字节数为4,数据范围为-2147483648+2147483647。(8)unsigned long,无符号长整型,位长为32位,字节数为4,数据范围为04294967295。(9)float,浮点型,位长为32位,字节数为4,数据范围为约为-3.410-38+3.410+38)。(10)double,双精度型,位长为64位,字节数为8,数据范围约为-

11、1.710-308+1.710+308)。2.2.1 2.2.1 基本数据类型基本数据类型项目2 嵌入式系统C语言知识要点1.1.数组数组1)1)数组的定义数组的定义定义格式:类型说明符类型说明符 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22 常量常量表达式表达式nn;其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示每一维中数据元素的个数,一维数组中也称为数组的长度。2.2.2 2.2.2 构造类型构造类型项目2 嵌入式系统C语言知识要点2)2)数组的初始化数组的初始化数组可以在定义的时候初始化。int array5=

12、1,2,3,4,5;在定义数组时,可以用放在一对大括号中的初始化表对其进行初始化。初始化值的个数可以和数组元素个数一样多。如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,后续的元素被初始化为0。3)3)数组元素访问数组元素访问数组元素的访问一般都是通过下标。【例】int a;a=arry0;则a的值为数组arry的第一个元素。需要注意的是,数组的第一个元素下标从0开始,在赋值的时候,还可以使用变量作为数组下标。项目2 嵌入式系统C语言知识要点4)4)字符数组字符数组 用来存放字符量的数组称为字符数组。其定义的一般形式是:char char 数组名数组名 字符长度字符长度 【例】

13、char array5=H,E,L,L,O;对于单个字符,必须要用单引号括起来。由于字符和整型是等价的,所以上面的字符型数组也可以这样表示:char array5=72,69,76,76,79;/*用对应的ASCII码*/但是字符型数组和整型数组也有不同的地方。项目2 嵌入式系统C语言知识要点2.2.结构体结构体 结构体是一种构造类型,它是由若干“成员”组成。每一个成员可以是一个基本数据类型或者是一个构造类型。既然结构体是一种“构造”而成的数据类型,那么在说明和使用之前就必须先定义。1)1)结构的定义结构的定义定义一个结构的一般形式为:struct结构名 类型说明符 变量名1;类型说明符 变量

14、名2;项目2 嵌入式系统C语言知识要点如;struct student char name8;int age;char sex2;char depart20;float wage1,wage2;wang;上面定义了一个结构名为student的结构变量wang,如果省略变量名wang,则该定义是对结构的说明。用已说明的结构名也可定义结构变量,如struct student ding;项目2 嵌入式系统C语言知识要点2)2)结构体访问结构体访问 依据结构体变量类型的不同,对于结构体成员一般有两种访问方式,一种为直接访问,一种为间接访问。直接访问应用于普通的结构体变量,间接访问应用于指向结构体变量的

15、指针。直接访问使用“结构体变量名.成员名”,间接访问使用“(*结构体指针名).成员名”或者使用“结构体指针名-成员名”。项目2 嵌入式系统C语言知识要点3 3.联合联合 共用体(Union)也叫“联合”,表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。共用体的声明和共用体变量定义都使用关键字union,其形式与结构体十分相似。具体为:union共用体名 数据类型 成员名;数据类型 成员名;变量名;访问共用体成员的方法与结构体相同,即采用“.”号和“-”访问。同样普通共用体变量用

16、“.”访问成员变量,指向共用体体变量的指针用“-”访问成员变量。项目2 嵌入式系统C语言知识要点4.4.枚举类型枚举类型 在程序设计中,有时会用到由若干个有限数据元素组成的集合,将这些有限可列的数据集合定义为枚举类型。1)1)枚举类型变量定义枚举类型变量定义(1)先定义类型后定义变量 enum;格式:,;例如:enum colors red=5,blue=1,green,black,white,yellow;colors c1,c2;c1、c2 为colors类型的枚举变量。项目2 嵌入式系统C语言知识要点(2)定义类型的同时定义变量格式:enum ,;例如:enum colors red=5

17、,blue=1,green,black,white,yellowc1,c2;(3)直接定义枚举变量格式:enum ,;例如:enum red=5,blue=1,green,black,white,yellow c1=red,c2=blue;由上例可以看出,定义枚举变量时,可对变量进行初始化赋值,c1的初始值为red,c2的初始值为blue。项目2 嵌入式系统C语言知识要点 enum ;其中,关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。例如:enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat;在定义枚举类型时,

18、也可指定元素对应的整型常量值。例如,描述逻辑值集合TRUE、FALSE的枚举类型boolean可定义如下:enum boolean TRUE=1,FALSE=0;该定义规定:TRUE的值为1,而FALSE的值为0。项目2 嵌入式系统C语言知识要点2)枚举类型变量的引用 对枚举类型变量只能使用两类运算:赋值运算与关系运算。(1)赋值运算。枚举类型的元素可直接赋给枚举变量,且同类型枚举变量之间可以相互赋值。【例】enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat;/定义星期日到星期六为枚举类型weekdays void main(void)weekdays day1

19、,day2;/定义两个枚举型变量day1、day2 day1=Sun;/将元素Sun赋给枚举变量day1 day2=day1;/枚举变量day1赋给day2 该例定义了两个类型为weekdays的枚举类型变量day1与day2,这两个枚举型变量只能取集合 Sun,Mon,Tue,Wed,Thu,Fri,Sat 中的一个元素,可用赋值运算符将元素Sun赋给day1。枚举变量day1的值可赋给同类枚举变量day2。项目2 嵌入式系统C语言知识要点(2)关系运算。枚举变量可与元素常量进行关系比较运算,同类枚举变量之间也可以进行关系比较运算,但枚举变量之间的关系运算比较是对其序号值进行的。【例】day

20、1=Sun;/day1中元素Sun的序号值为0day2=Mon;/day2中元素Mon的序号值为1if(day2day1)day2=day1;/day2day1的比较就是序号值关系式:10的比较if(day1Sat)da1=Sat;/day1Sat的比较就是序号值关系式:06的比较 day2与day1的比较,实际上是其元素Mon与Sun序号值1与0的比较,由于10成立,所以day2day1条件为真,day2=day1=Sun。同样由于day1中元素Sun的序号值0小于Sat的序号值6,所以day1Sat条件为假,day1的值不变。项目2 嵌入式系统C语言知识要点5.5.指针指针 指针是一个特殊

21、的变量,它存储的是内存里的一个地址。指针的要素包括:指针的类型,即指针所指向的数据类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。指针根据所指的变量类型不同,可以是整型指针(int*)、浮点型指针(float*)、字符型指针(char*)、结构指针(struct*)和联合指针(union*)。1)指针变量的定义 指针变量定义的一般形式为:类型说明符*变量名;其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。【例】int*p1;/表示p1是指向整型数的指针变量,p1的值是整型变量的地址项目2 嵌入式系统C语言知识要点2)

22、指针变量的赋值 指针变量使用之前不仅要进行声明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量赋值时只能赋予地址。【例】int a;/a为整型数据变量 int*p1;/声明p1是整型指针变量 p1=&a;/将a的地址作为p1初值项目2 嵌入式系统C语言知识要点3)指针的运算(1)取地址运算符&。取地址运算符&是单目运算符,其结合性为自右至左,其功能是取变量的地址。(2)取内容运算符*。取内容运算符*是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指针变量。【例】int a,b;/a,b为整型数据变量 int*p

23、1;/声明p1是整型指针变量 p1=&a;/将a的地址作为p1初值 a=80;b=*p1;/运行结果:b=80,即为a的值项目2 嵌入式系统C语言知识要点(3)指针的加减算术运算。对于指向数组的指针变量,可以加或减一个整数n。设pa是指向数组a的指针变量,则pa+n,pa-n,pa+,+pa,pa-,-pa运算都是合法的。指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。【例】int a5,*pa;/声明a为整型数组(下标为05),pa为整型指针 pa=a;/pa指向数组a,也是指向a0 pa=pa+2;/pa指向a2,即pa的值为&pa2 指针变量

24、的加或减运算只能对数组指针变量进行,对指向其他类型变量的指针变量做加或减运算是毫无意义的。项目2 嵌入式系统C语言知识要点4)void指针类型 void*为“无类型指针”,即定义了指针变量,但没有指定它是指向哪种类型数据,编程中可以把无类型指针强制转化成任何类型的指针。【例】void*p1;/声明p1无类型指针 int*p2;/声明p2为整型指针 p1=p2;/用整型指针p2的值给p1直接赋值 但这并不意味着,void*也可以无需强制类型转换地赋给其他类型的指针,也就是说p2=p1这条语句编译会出错,而必须将p1强制类型转换成“void*”类型。因为“无类型”可以包容“有类型”,而“有类型”则

25、不能包容“无类型”。5)字符串指针除了用字符数组来存储字符串外,应用较多的方法是用字符串指针指向一个字符串。【例】char*string=I love China!;项目2 嵌入式系统C语言知识要点6.6.空类型空类型 空类型即void类型,该类型字节长度为0。void类型主要有两个用途:一是明确地表示一个函数不返回任何值或者无参数;二是产生一个该类型指针(可根据需要动态地分配给其内存),以便于赋给其他类型的指针。7.7.位域位域 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,引入一种称为“位域”,也称“位段”的数据结构。所谓“位域”

26、是把一个类型单元中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以达到压缩数据的目的,同时,通过位域定义位变量,是实现单个位操作的重要途径和方法,产生的代码更为紧凑、高效。项目2 嵌入式系统C语言知识要点1)位域的定义 采用结构体进行定义,成员变量必须是“unsigned int”类型,变量名后加“:”接位域所占字节数,位域不可以跨字节,不用的位可以填“0”。【例】struct bs unsigned int a:2;unsigned int b:6;b1;struct bs unsigned int a:4;unsigned int

27、 :0;/本字节其余4位不用 unsigned int b:4;unsigned int c:4;b1;项目2 嵌入式系统C语言知识要点2)位域的引用位域引用方式和结构体变量相同,可以用“.”引用位域。对于位域,在使用时要注意位域中的各位必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域,也可以有意使某位域从下一单元开始。【例】struct bs unsigned int a:4 unsigned int:0/空域(本字节剩余位不用)unsigned int b:4/从下一单元开始存放 unsigned int c:4 ;项目2 嵌入式系统C

28、语言知识要点2)位域的引用 位域引用方式和结构体变量相同,可以用“.”引用位域。对于位域,在使用时要注意位域中的各位必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域,也可以有意使某位域从下一单元开始。【例】struct bs unsigned int a:4 unsigned int:0/空域(本字节剩余位不用)unsigned int b:4/从下一单元开始存放 unsigned int c:4 ;在这个位域定义中,a占第一字节的4位,后4位填0表示不使用,b从第二字节开始,占用4位,c占用4位。项目2 嵌入式系统C语言知识要点 位域不允

29、许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能引用的。【例】Struct bs unsigned int a:1/第0位 unsigned int:2/无域名,2位不能使用 unsigned int b:3/第35位 unsigned int c:2/第67位 b1;位域在本质上就是一种结构类型,只是其成员是按二进位分配的。8.双字类型双字类型,即word类型,该类型本质上是无符号短整型,一般用于定义16位寄存器。项目2 嵌入式系统C语言知识要点2.2.3 2.2.3 运算运算符符项目2 嵌入式系

30、统C语言知识要点2.2.4 2.2.4 流程控制流程控制 在程序设计中主要有三种基本控制结构:顺序结构、选择结构和循环结构。1.1.顺序结构顺序结构 顺序结构就是从前向后依次执行语句。从整体上看,所有程序的基本结构都是顺序结构,中间的某个过程可以是选择结构或循环结构。2.2.选择结构选择结构 选择结构的作用是,根据是否满足所指定的条件,决定执行哪些语句。在C语言中主要有if和switch两种选择结构。项目2 嵌入式系统C语言知识要点1)if结构if(条件表达式)语句项或if(条件表达式)语句项else 语句项 如果表达式取值真(除0以外的任何值),则执行if的语句项;否则,如果else存在的话

31、,就执行else的语句项。每次只会执行if或else中的某一个分支。语句项可以是单独的一条语句,也可以是多条语句组成的语句块(要用一对大括号“”括起来)。项目2 嵌入式系统C语言知识要点if语句可以嵌套,有多个if语句时else与最近的一个配对。对于多分支语句,可以使用如下多重判断结构。if(条件表达式)语句项else if(条件表达式)语句项else if(条件表达式)语句项else 语句项项目2 嵌入式系统C语言知识要点项目2 嵌入式系统C语言知识要点3.3.循环结构循环结构循环结构常用for循环、while循环与do.while循环。1)for循环格式为:for(初始化表达式;条件表达式

32、;修正表达式)循环体执行过程为:先求解初始化表达式;再判断条件表达式,若为假(0),则结束循环,转到循环下面的语句;如果其值为真(非0),则执行“循环体”中语句。然后求解修正表达式;再转到判断条件表达式处根据情况决定是否继续执行“循环体”。2)while循环格式为:while(条件表达式)循环体当表达式的值为真(非0)时执行循环体。其特点是:先判断后执行。项目2 嵌入式系统C语言知识要点3)do.while循环格式为:do 循环体 while(条件表达式);其特点是:先执行后判断。即当流程到达do后,立即执行循环体一次,然后才对条件表达式进行计算、判断。若条件表达式的值为真(非0),则重复执行

33、一次循环体。需要注意的是while(条件表达式)后面不能遗漏了分号“;”4.break4.break和和continuecontinue在循环中常常使用break语句和continue语句,这两个语句都会改变循环的执行情况。break语句用来从循环体中强行跳出循环,终止整个循环的执行;continue语句使其后语句不再被执行,进行新的一次循环(可以形象地理解为返回循环开始处执行)。项目2 嵌入式系统C语言知识要点2.2.5 2.2.5 函函数数 函数是对可执行代码的一种封装,其目的是实现程序模块化和重用。main()函数可以调用其他函数,这些函数执行完毕后程序的控制权又返回到main()函数中

34、,但main()函数不能被别的函数所调用。通常将这些被调用的函数称为下层(lower-level)函数或子函数。函数调用发生时,立即执行被调用的函数,而调用者则进入等待状态,直到被调用函数执行完毕。函数可以有参数和返回值。函数的定义包括函数头和语句体两部分,定义格式如下:函数返回值类型 函数名(参数表)语句体;项目2 嵌入式系统C语言知识要点2.2.6 2.2.6 编译预处编译预处理理 编译预处理是C编译系统的一个重要组成部分。C语言允许在程序中使用几种特殊的命令,在C编译系统对程序进行通常的编译(包括语法分析、代码生成、优化等)之前,先对程序中的这些特殊的命令进行“预处理”,然后将预处理的结

35、果和源程序一起再进行常规的编译处理,以得到目标代码。C提供的预处理功能主要有宏定义、条件编译和文件包含。1.1.宏定义宏定义格式:#define宏名表达式表达式可以是数字、字符,也可以是若干条语句。在编译时,所有引用该宏的地方,都将自动被替换成宏所代表的表达式。例#define PI 3.1415926/程序中可以PI代替数字3.1415926,如PI*r*r。项目2 嵌入式系统C语言知识要点2.2.条件编译条件编译格式1:#if 表达式#else 表达式#endif 如果表达式成立,则编译#if下的程序,否则编译#else下的程序,#endif为条件编译的结束标志。格式2:#ifdef 宏名

36、/如果宏名称被定义过,则编译以下程序 格式3:#ifndef 宏名/如果宏名称未被定义过,则编译以下程序 条件编译通常用来调试、保留程序(但不编译),方便程序移植还可以在需要对两种状况做不同处理时使用。项目2 嵌入式系统C语言知识要点3.3.文件包含文件包含 所谓“文件包含”,是指一个源文件将另一个源文件的全部内容包含进来,其一般形式为:#include“文件名”4.typedef4.typedef 除了可以直接使用C提供的标准类型名(如int、char、float、double、long等)和自己定义的结构体、指针、枚举等类型外,还可以用typedef定义新的类型名来代替已有的类型名。【例】

37、typedef unsigned char INT8U;表示指定用INT8U代表unsigned char类型。下面这样的两个语句是等价的:unsigned char i;等价于INT8U i;项目2 嵌入式系统C语言知识要点5.5.程序设计中的注意事项程序设计中的注意事项 除了在程序设计中要遵循相关规范外,还要坚持使编程者容易理解和调试的原则,即:(1)名字要能见文知义,必要时添加注释,说明变量用途。(2)全局变量加上前缀“g”,以示区别。(3)在命名自己的变量时,不要用下划线开头,前面加下划线一般是系统变量。(4)代码编辑时要注意输入法,代码必须是英文输入,符号输入时要特别注意。(5)不要

38、使用看起来很体现编程技巧而不容易理解的代码。初学者尽量不要使用多维数组,也不要使用多重指针。(6)注意不同类型数据直接的运算可能带来的数据错误。项目2 嵌入式系统C语言知识要点嵌入式系统基础项目化教程项目3 AW60及其最小系统3.1 项目内容与要求3.2 项目背景知识3.2.1 3.2.1 飞思卡尔飞思卡尔S08S08系列微控系列微控制器制器3.2.2 MC9S08AW603.2.2 MC9S08AW60芯片引脚芯片引脚分配分配3.2.3 AW603.2.3 AW60存储器映像存储器映像3.2.4 S08CPU3.2.4 S08CPU的内部寄存器的内部寄存器3.2.5 AW603.2.5 A

39、W60最小系统最小系统项目3 AW60及其最小系统3.1 项目内容与要求(1)了解S08系列MCU系列芯片特点。(2)熟悉AW60存储器映像、寄存器。(3)掌握AW60最小系统的构成。3.2 项目背景知识 S08系列MCU是8位微控制器,主要有HC08、S08和RS08三种类型。其中S08为HC08系列的兼容增强型,是HCS08的简写,两者的主要区别在于调试方式和最高工作频率不同;RS08是S08架构的简化版本,其特点在于体积更小、价格低廉。项目3 AW60及其最小系统3.2.1 3.2.1 飞思卡尔飞思卡尔S08S08系列微控系列微控制器制器1.S08系列命名规则系列命名规则 S08系列MC

40、U芯片的名称一般包括7个部分,以“MC9S08AW60CPUE”为例,其第一部分“MC”表示产品状态为合格,该部分为“PC”表示测试品。第二部分中,9表示片内带闪存Flash EEPROM,该部分为“8”表示片内带EEPROM,为“7”表示片内带EPROM或一次编程ROM(OTPROM,One Time Programmable ROM),此部分空缺表示片内无程序存储器或带ROM。第三部分S08表示芯片内核,取值除S08外还有HC08、RS08。第四部分“AW”表示子序列,除此之外还有GP、GZ等子系列。第五部分“60”表示存储器大小,60表示60KB。第六部分“C”表示表示芯片工作温度范围为

41、-4085。第七部分“PUE”表示封装。项目3 AW60及其最小系统2.MC9S08AW60的特点的特点 MC9S08AW60的最高工作频率可达40 MHz,内部总线频率为20 MHz;芯片内部自带振荡电路,工作频率可以由内部模块产生,也可外接晶振进行设定,还可以外接外部时钟(将MC9S08AW60简称为AW60)。它的主要特点:(1)AW60支持BGND指令,可以在背景调试模式下工作。(2)可以进行断点在线调试。(3)内部含32个中断/复位源、大小为2 KB的RAM、带块保护和安全选项的Flash存储器。(4)具有计算机正常操作复位,低电压检测与复位或中断,非法操作码检测与复位,非法地址检测

42、与复位等功能。(5)有16个ADC通道、10位A/D转换器并有自动比较功能。项目3 AW60及其最小系统(6)具有两个串行通信接口SCI模块与可选的13位中断,一个串行外设接口SPI模块,一个速度可达100 kb/s的集成电路互连总线I2C模块。(7)具有8引脚键盘中断模块。(8)具有54通用输入/输出(I/O)引脚。输入时,每个端口都有软件选择的上拉电阻;输出时,每个端口都有软件选择的回转速率控制,且每个端口都有软件选择的驱动强度。(9)具有主复位引脚和上电复位(POR)。(10)具有内部上拉复位RESET、IRQ和BKGD/MS引脚,以减少客户的系统成本。(11)具有Wait和两个STOP

43、S共三种省电模式。项目3 AW60及其最小系统3.MC9S08AW60(AW60)的内部结构框图的内部结构框图 图3-1是AW60 的内部结构框图。如图所示,AW60有以下主要部分:CPU、存储器、定时器接口模块、定时器模块、看门狗模块、通用IO模块、串口通信模块(SCI)、串行外设接口(SPI)模块、IIC(即I2C)模块、A/D转换模块、键盘中断模块(KBI)、时钟发生模块(KBI)、复位与中断模块、低电压检测(LVD)模块等。项目3 AW60及其最小系统图图3-1 AW60 MCU框框图图项目3 AW60及其最小系统4.MC9S08AW60(AW60)系列芯片封装与资源系列芯片封装与资源

44、MC9S08AW60系列芯片存储器容量和封装形式如表3.1所示。不同的封装可用的外设也有所不同,具体如表3.2所示。项目3 AW60及其最小系统 图3-2是64引脚LQFP封装的AW60的引脚图。每个引脚都可能有多个复用功能,系统设计时必须注意只能使用其中的一个功能。项目3 AW60及其最小系统3.2.2 MC9S08AW603.2.2 MC9S08AW60芯片引脚芯片引脚分配分配项目3 AW60及其最小系统图图3-2 MC9S08AW60 64引脚引脚QFP/LQFP封封装装图图1.电源电源类信号引脚类信号引脚 VDD 和VSS 是MCU的主要电源供应引脚,该电源给所有I/O缓冲电路和一个内

45、部电压调节器供电。内部电压调节器将调节后的低压电源提供给CPU和MCU的其他内部电路。一般情况下,在实际应用系统中电源引脚接两个电容。一般应该选用一个大容量电解电容器,如10 F的钽电容;另外一个则可选用0.1 F的陶瓷旁路电容。这两个电容要尽可能地靠近VDD和VSS电源引脚,用以抑制高频噪声。AW60 还有第二个VSS 引脚,这个引脚应连接到系统的接地端或通过一个低阻抗连接到主VSS引脚。VDDAD 和VSSAD 是MCU 的模拟电源引脚,这个电源给ADC模块供电。项目3 AW60及其最小系统2复位信号引脚复位信号引脚 复位引脚RESET是一个专用引脚,通常用于连接到标准的6 引脚后台调试连

46、接器,这样调试系统则可以直接复位MCU系统。内部上电复位和低电压复位通常不需要外部复位电路。如果需要,可以增加一个外部手动复位装置。3XTAL、EXTAL引脚引脚MCU工作时,需要有稳定的时钟脉冲,MCU 内部集成了一个皮尔斯振荡器,可外接一个晶体或陶瓷谐振器,由此确定时钟脉冲频率,这时外接的晶体或陶瓷振荡器由XTAL、EXTAL引脚接入。为保证有效起振,这两个引脚还要外接高品质的陶瓷电容器。MCU工作的时钟脉冲也可以由EXTAL引脚输入。项目3 AW60及其最小系统4后台后台/模式选择引脚模式选择引脚(BKGD/MS)复位时,BKGD/MS引脚作为一个模式选择引脚。复位后,该引脚立即作为后台

47、引脚被用于后台调试通信。当作为后台/模式选择引脚时,该引脚包含内部上拉电阻、输入滞后装置,标准输出驱动器,而且无需输出转换率控制。若这个引脚上没有任何连接,则MCU在复位的上升沿进入正常的操作模式。如果调试系统被连接到6引脚的标准后台调试接口,则它可以在复位上升沿保持BKGD/MS为低电平,强制MCU进入后台模式。BKGD/MS引脚主要用于后台调试控制器(BDC)通讯,且遵循自定义协议,该协议规定每传送一个位使用目标MCU的16个BDC时钟周期。目标MCU的BDC时钟频率可以和总线时钟频率一样,因此不要将任何大的电容和BKGD/MS引脚相连,否则会干扰后台串行通信。虽然BKGD/MS引脚是一个

48、伪开漏引脚,但是后台调试通信协议提供了简短的、主动驱动的高加速脉冲以确保快速上升。电缆的小电容和内部上拉电阻的绝对值对BKGD/MS引脚上的上升沿和下降沿几乎不起任何作用。项目3 AW60及其最小系统5ADC的参考引脚的参考引脚(VREFH,VREFL)VREFH和VREFL引脚分别为ADC模块输入高参考电压和低参考电压。6外部中断引脚外部中断引脚(IRQ)IRQ引脚既是IRQ中断的输入源,又是BIH和BIL指令的输入源。如果IRQ的功能没有确立,该引脚不执行任何功能。当IRQ配置为IRQ的输入和设定为上升沿检测时,启用下拉电阻,而非上拉电阻。在EMC敏感的应用中,推荐在IRQ引脚上加一个RC

49、滤波器。项目3 AW60及其最小系统7GPIO及外设端口及外设端口 余下的引脚被通用I/O引脚、片内外设功能复用,比如定时器和串行I/O系统。复位后,所有的引脚立即被配置为高阻态通用输入引脚,并且没有内部上拉电阻。为了避免来自浮空输入引脚额外的漏电流,应用程序中的复位初始化例程要么使能上拉或下拉电阻,要么改变不常用引脚的方向并将其置为输出使该引脚不再浮空。8其他引脚 复位后,MCU使用内部产生的时钟(即自时钟模式,频率为fself_reset),这个时钟的晶振频率大约为8 MHz。这个频率源在上电复位启动和使能时作为时钟源,以避免需要一个长期的晶振启动时延。MCU内也包含一个内部时钟发生器(I

50、CG)模块,可用于运行MCU。项目3 AW60及其最小系统 存储器映像(Memory map),是指地址空间的分配情况。S08系列MCU的逻辑地址空间为64KB,地址范围为$0000$FFFFF。这$0000$FFFF(“$”表示十六进制)的寻址范围被分成若干个区段,每个区段的作用不同。需要注意,一些芯片中,有些地址区段根本没有对应物理存储器。MC9S08AW60片内存储器包括RAM、用于非易失性数据存储的FLASH 程序存储器、I/O寄存器和控制/状态寄存器,其存储器映像如图3-3所示。64KB大小的存储空间被分为直接页寄存器、RAM、FLASH、高端页寄存器、非易失性寄存器、中断向量区。3

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|