1、第1章 概述V1.0 2010.4本章目录本章目录嵌入式系统定义、由来及特点嵌入式系统定义、由来及特点 1.1嵌入式系统的知识体系、学习误区及学习建议嵌入式系统的知识体系、学习误区及学习建议 1.2嵌入式系统常用术语嵌入式系统常用术语 1.3嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要 1.4本书学习与实践资料索引本书学习与实践资料索引 1.5本章目录本章目录嵌入式系统定义、由来及特点嵌入式系统定义、由来及特点 1.1嵌入式系统的知识体系、学习误区及学习建议嵌入式系统的知识体系、学习误区及学习建议 1.2嵌入式系统常用术语嵌入式系统常用术语 1.3嵌入式系统常
2、用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要 1.4本书学习与实践资料索引本书学习与实践资料索引 1.51.1 1.1 嵌入式系统定义、由来及特点嵌入式系统定义、由来及特点1.1.1 1.1.1 嵌入式系统的定义嵌入式系统的定义Embedded System DictionaryEmbedded System Dictionary:一种计算机硬件和软件的组合,也许还有一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。在某些特机械装置,用于实现一个特定功能。在某些特定情况下,嵌入式系统是一个大系统或产品的定情况下,嵌入式系统是一个大系统或产品的一部分一部分
3、无处不在的嵌入式系统无处不在的嵌入式系统1.1 1.1 嵌入式系统定义、由来及特点嵌入式系统定义、由来及特点1.1.2 1.1.2 嵌入式系统的由来及其与微控制器的关系嵌入式系统的由来及其与微控制器的关系1 1单片机(微控制器)的基本含义单片机(微控制器)的基本含义微控制器(微控制器(MCUMCU):在一块芯片上集成了中央处理单元():在一块芯片上集成了中央处理单元(CPUCPU)、)、存储器(存储器(RAM/ROMRAM/ROM等)、定时器等)、定时器/ /计数器及多种输入输出(计数器及多种输入输出(I/OI/O)接口的比较完整的数字处理系统。接口的比较完整的数字处理系统。 MCU 内部总线
4、(控制总线、数据总线、地址总线) CPU RAM Flash 存存储储器器 A/D 转转换换接接口口 工工作作支支撑撑模模块块 定定时时器器接接口口 串串行行通通信信接接口口 其其他他 I/O 模模块块 1.1 1.1 嵌入式系统定义、由来及特点嵌入式系统定义、由来及特点1.1.2 1.1.2 嵌入式系统的由来及其与微控制器的关系嵌入式系统的由来及其与微控制器的关系嵌入式系统的由来嵌入式系统的由来通用计算机系统:满足海量高速数值计算的计算机。通用计算机系统:满足海量高速数值计算的计算机。嵌入式计算机系统:嵌入到实际应用系统中,实现嵌入嵌入式计算机系统:嵌入到实际应用系统中,实现嵌入式应用的计算
5、机。式应用的计算机。嵌入式系统与嵌入式系统与MCUMCU的关系的关系& MCUMCU的特点:体积小、价格低、稳定可靠的特点:体积小、价格低、稳定可靠 & 大部分嵌入式系统以大部分嵌入式系统以MCUMCU为核心进行设计为核心进行设计& 以以MCUMCU为核心的系统是应用最广的嵌入式系统。为核心的系统是应用最广的嵌入式系统。 1.1 1.1 嵌入式系统定义、由来及特点嵌入式系统定义、由来及特点1.1.3 1.1.3 嵌入式系统的特点嵌入式系统的特点& 嵌入式系统是计算机系统,但不单独以通用计算机嵌入式系统是计算机系统,但不单独以通用计算机面目出现。面目出现。& 嵌入式系统开发需要专用工具和特殊方法
6、嵌入式系统开发需要专用工具和特殊方法 。& 使用使用MCUMCU设计嵌入式系统,数据与程序空间采用不设计嵌入式系统,数据与程序空间采用不同存储介质。同存储介质。& 开发嵌入式系统涉及软件、硬件及应用领域的知识。开发嵌入式系统涉及软件、硬件及应用领域的知识。 & 嵌入式系统的其他特点嵌入式系统的其他特点 。1.2 1.2 嵌入式系统的知识体系、学习误区及学习建嵌入式系统的知识体系、学习误区及学习建议议1.2.1 1.2.1 嵌入式系统的知识体系嵌入式系统的知识体系(1 1)硬件最小系统)硬件最小系统(2 2)通用)通用I/OI/O(3 3)模数转换)模数转换A/DA/D(4 4)数模转换)数模转
7、换D/AD/A(5 5)通信)通信(SCI(SCI、SPISPI、I2CI2C,CANCAN、USBUSB、ZigBeeZigBee等等) );(6 6)显示)显示(LED(LED、LCDLCD等等) );(7 7)控制)控制( (控制各种设备,包含控制各种设备,包含PWMPWM等控制技术等控制技术) );(8 8)数据处理)数据处理( (图形、图像、语音、视频等处理或识别图形、图像、语音、视频等处理或识别) );(9 9)各种具体应用。)各种具体应用。1.2 1.2 嵌入式系统的知识体系、学习误区及学习建嵌入式系统的知识体系、学习误区及学习建议议1.2.2 1.2.2 嵌入式系统的学习误区嵌
8、入式系统的学习误区(1 1)操作系统的困惑)操作系统的困惑(2 2)硬件与软件的困惑)硬件与软件的困惑 (3 3)片面认识嵌入式系统)片面认识嵌入式系统 (4 4)入门芯片选择的困惑)入门芯片选择的困惑1.2 1.2 嵌入式系统的知识体系、学习误区及学习建嵌入式系统的知识体系、学习误区及学习建议议1.2.3 1.2.3 基础阶段的学习建议基础阶段的学习建议!打好软件硬件基础打好软件硬件基础 !选择一个芯片及硬件评估板选择一个芯片及硬件评估板!深入理解深入理解MCUMCU的硬件最小系统的硬件最小系统!不要一开始就学嵌入式实时操作系统不要一开始就学嵌入式实时操作系统RTOSRTOS!避免片面认识嵌
9、入式系统避免片面认识嵌入式系统!注重实验与实践注重实验与实践!入门芯片选择不要太复杂入门芯片选择不要太复杂!关于汇编与关于汇编与C C语言的取舍语言的取舍!明确学习目的,注意学习方法明确学习目的,注意学习方法 1.3 1.3 嵌入式系统常用术语嵌入式系统常用术语1.3.1 1.3.1 与与硬件硬件相关的术语相关的术语 封装封装(Package)(Package) 印刷电路板印刷电路板(PCB(PCB,Printed circuit board)Printed circuit board) 动态可读写随机存储器动态可读写随机存储器 (DRAM (DRAM,Dynamic Random Acces
10、s Memory)Dynamic Random Access Memory) 静态可读写随机存储器静态可读写随机存储器 (SRAM (SRAM,Static Random Access Memory)Static Random Access Memory) 只读存储器只读存储器(ROM(ROM,Read Only Memory)Read Only Memory) 闪速存储器闪速存储器(Flash Memory)(Flash Memory) 模拟量模拟量 开关量开关量1.3 1.3 嵌入式系统常用术语嵌入式系统常用术语1.3.2 1.3.2 与与通信通信相关的术语相关的术语 并行通信并行通信 串
11、行通信串行通信 串行外设接口串行外设接口SPISPI 集成电路互连总线集成电路互连总线I I2 2C C 通用串行总线通用串行总线USBUSB 控制器局域网控制器局域网CANCAN 背景调试模式背景调试模式BDMBDM 边界扫描测试协议边界扫描测试协议JTAGJTAG1.3 1.3 嵌入式系统常用术语嵌入式系统常用术语1.3.3 1.3.3 与与功能模块及软件功能模块及软件相关的术语相关的术语? 通用输入通用输入/ /输出输出GPIOGPIO? A/D A/D与与D/AD/A? 脉冲宽度调制器脉冲宽度调制器PWMPWM? 看门狗看门狗? 液晶显示液晶显示LCDLCD? 发光二极管发光二极管LE
12、DLED? 键盘键盘? 实时操作系统实时操作系统RTOSRTOS1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要1.1.数据类型数据类型数数据据类类型型基本类型基本类型构造类型构造类型字节型字节型整型整型实型实型数组数组结构结构联合联合枚举枚举指针指针空类型空类型1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要基本类型基本类型数据类型数据类型简明含义简明含义位数位数字节数字节数字节型字节型signed charsigned char有符号字节型有符号字节型8 81 1unsigned charunsig
13、ned char无符号字节型无符号字节型8 81 1整型整型signed shortsigned short有符号短整型有符号短整型16162 2unsigned shortunsigned short无符号短整型无符号短整型16162 2signed intsigned int有符号短整型有符号短整型16162 2unsigned intunsigned int无符号短整型无符号短整型16162 2signed longsigned long有符号长整型有符号长整型32324 4unsigned longunsigned long无符号长整型无符号长整型32324 4实型实型floatflo
14、at浮点型浮点型32324 4doubledouble双精度型双精度型64648 81.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要2.2.运算符号运算符号$算术运算:算术运算:+ - + - * * / % / %$逻辑运算逻辑运算:| & !| & !$关系运算:关系运算: = = = = !=$位运算:位运算: & | & |$增量和减量运算:增量和减量运算:+ -+ -$复合赋值运算:复合赋值运算:+= -= += -= * *= /= %= = /= %= 等等$指针和地址运算:指针和地址运算:* * & &$输出格式转换输出格式转换1.
15、4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要3.3.流程控制流程控制$顺序结构顺序结构$选择结构选择结构ifif结构结构switchswitch结构结构$循环结构循环结构forfor循环循环whilewhile循环循环do.whiledo.while循环循环 注意注意breakbreak和和continuecontinue语句在循环中的应用区别!语句在循环中的应用区别! Switch语句与语句与if语句的不同之处在于语句的不同之处在于switch只只能对等式进行测试,而能对等式进行测试,而if可以计算关系表达式或可以计算关系表达式或逻辑表达式。逻辑
16、表达式。如果多分支选择能用两种语句实现,则如果多分支选择能用两种语句实现,则switch语句的运行性能要优于语句的运行性能要优于if语句。语句。 break表示跳出循表示跳出循环,环,continue表示表示结束本次循环结束本次循环 1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要4.4.函数函数u 函数参数、类型函数参数、类型u 函数返回值类型函数返回值类型u ReturnReturn语句格式:语句格式:return return 表达式表达式; ; 注意注意:(1)函数定义时要同时声明其类型;函数定义时要同时声明其类型;(2)调用函数前要先声明
17、该函数;)调用函数前要先声明该函数;(3)传给函数的参数值,其类型要与函数原定)传给函数的参数值,其类型要与函数原定 义一致;义一致;(4)接收函数返回值的变量,其类型也要与函)接收函数返回值的变量,其类型也要与函数类型一致等。数类型一致等。 1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要5.5.指针指针u 指针是指向变量的地址,实质上指针就是指针是指向变量的地址,实质上指针就是存储单元的地址。存储单元的地址。u 指针变量的定义:类型说明符指针变量的定义:类型说明符 * * 变量名变量名u 指针变量的赋值:只能赋予地址指针变量的赋值:只能赋予地址
18、u 指针的运算:取地址运算符指针的运算:取地址运算符& &、取内容运算、取内容运算符符* *。1000a1000801003p1int a;int *p1 =&a;int a,b; /a,b为整型数据变量int *p1; /声明p1是整型指针变量p1 =&a; /将a的地址作为p1初值a=80;b=*p1; /运行结果:b=80,即为a的值1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要6.6.结构体结构体定义结构体类型,类型名称为定义结构体类型,类型名称为studentstudent: struct student char name8; /成员
19、变量成员变量name int age; /成员变量成员变量age char sex2; /成员变量成员变量sex; 声明和使用结构体变量和指针:声明和使用结构体变量和指针: struct student s1;struct student *Pstudent; s1.age=20;Pstudent=(struct student*)malloc(sizeof (struct student);Pstudent-age=18;结构体指针是指向结构体中第一个成结构体指针是指向结构体中第一个成员的首地址,因此在使用之前应该对员的首地址,因此在使用之前应该对结构体指针初始化,即分配整个结构结构体指针初
20、始化,即分配整个结构体长度的字节空间。体长度的字节空间。 1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要7.7.位域位域定义位域类型,类型名称为定义位域类型,类型名称为bsbs,同时定义该类型变量,同时定义该类型变量b1b1: struct bs int a:8; int b:2; int c:6; b1; 使用方法:使用方法: b1.a=1; /b1.a=1; /将将b1b1的第的第0 0位置位置1 1b1.b=7; /b1.b=7; /将将b1b1的第的第3 35 5位置位置111111cba1.4 1.4 嵌入式系统常用的标准嵌入式系统常用
21、的标准C C语言基本语法概要语言基本语法概要8.8.编译预处理编译预处理8 宏定义宏定义 #define #define 宏名宏名 表达式表达式8 条件编译:条件编译: 格式格式1 1:#if #if 表达式表达式 #else #else 表达式表达式 #endif#endif 格式格式2 2:#ifdef #ifdef 宏名宏名 格式格式3 3:#ifndef #ifndef 宏名宏名8 “文件包含文件包含”处理处理 #include #include “文件名文件名”#define PI 3.1415926 #define S(r) PI*r*r多行宏定义举例:多行宏定义举例:#defin
22、e ST %s /* comment1 */ %s /* comment2 */ %sn /* comment3 */ printf(ST, “one , “two , “three); 程序输出:one two three条件编译示例条件编译示例1:#define DEBUG 0 main() #if DEBUG printf(Debuggingn); #endif printf(Runningn); 条件编译示例条件编译示例3:/*my.h*/ #ifndef MY_H #define MY_H #endif条件编译示例条件编译示例2:#define DEBUG main() #ifdef
23、 DEBUG printf(Debuggingn); #else printf(Not debuggingn); #endif printf(Runningn); 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C语言基本语法概要语言基本语法概要 指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码 #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif
24、结束一个#if#else条件编译块 #error 停止编译并显示错误信息1.4 1.4 嵌入式系统常用的标准嵌入式系统常用的标准C C语言基本语法概要语言基本语法概要9.9.用用typedeftypedef定义类型定义类型! 示例:示例:typedef unsigned char INT8U;typedef unsigned char INT8U;! 用法说明:用法说明:(1 1)用)用typedeftypedef可以定义各种类型名,但可以定义各种类型名,但不能用来定义变量不能用来定义变量。(2 2)用)用typedeftypedef只是对已经存在的类型增加一个类型名,而只是对已经存在的类型增
25、加一个类型名,而没有创造新的类型没有创造新的类型。(3 3)typedeftypedef与与#define#define有有相似相似之处,之处,(4 4)常用)常用typedeftypedef定义一些数据类型,并把它们单独存放在定义一些数据类型,并把它们单独存放在一个文件中,而后在需要用到它们的文件中用一个文件中,而后在需要用到它们的文件中用#include#include命命令令把它们包含进来。把它们包含进来。(5 5)使用)使用typedeftypedef有利于程序的有利于程序的通用与移植通用与移植。typedef unsigned int INT16U; /在编译时处理#define INT16U unsigned int; /在预编译时处理