1、嵌入式系统设计(STM32)第1讲资料考试形式考试形式n总成绩总成绩=实验实验40%+平时平时10%+期末期末50%n实验时间:实验时间:1-17周周,双周周五上午双周周五上午8:00n实验地点:电子楼实验地点:电子楼119主要内容主要内容n 1.嵌入式系统简介嵌入式系统简介n 2.STM32简介简介n 3.教学开发板教学开发板n 4.工程模板的建立工程模板的建立1.嵌入式系统简介嵌入式系统简介n1.1 嵌入式系统定义嵌入式系统定义n1.2 嵌入式系统的特点嵌入式系统的特点n1.3 嵌入式系统的分类嵌入式系统的分类n1.4 嵌入式系统的应用嵌入式系统的应用n1.5 嵌入式系统的发展嵌入式系统的
2、发展n1.6 通用计算机与嵌入式系统对比通用计算机与嵌入式系统对比1.1 嵌入式系统定义嵌入式系统定义n嵌入式系统(嵌入式系统(Embedded system),是一种),是一种“完全完全嵌入受控器件内部,为特定应用而设计的专用计算机嵌入受控器件内部,为特定应用而设计的专用计算机系统系统”,根据英国电器工程师协会(根据英国电器工程师协会(U.K.Institution of Electrical Engineer)的定义,嵌入式系统为)的定义,嵌入式系统为“用用于控制、监视或者辅助操作机器和设备的装置于控制、监视或者辅助操作机器和设备的装置”。n与个人计算机这样的通用计算机系统不同,嵌入式系与
3、个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。对它进行优化,减小尺寸降低成本。n嵌入式系统通常进行大量生产,所以单个的成本节约,嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。能够随着产量进行成百上千的放大。1.1 嵌入式系统定义嵌入式系统定义n嵌入式系统的核心是由一个或几个预先编程好以用来嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务
4、的微处理器或者单片机组成。与通执行少数几项任务的微处理器或者单片机组成。与通用计算机能够运行用户选择的软件不同,嵌入式系统用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的,所以经常称为上的软件通常是暂时不变的,所以经常称为“固件固件”。n国内普遍认同的嵌入式系统定义为:以国内普遍认同的嵌入式系统定义为:以应用应用为中心,为中心,以以计算机技术计算机技术为基础,为基础,软硬件软硬件可裁剪,适应应用系统可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的对功能、可靠性、成本、体积、功耗等严格要求的专专用计算机系统用计算机系统。n一般而言,嵌入式系统的构架可以分成四
5、个部分:处一般而言,嵌入式系统的构架可以分成四个部分:处理器、存储器、输入输出(理器、存储器、输入输出(I/O)和软件。)和软件。1.2 嵌入式系统的特点嵌入式系统的特点嵌入式系统的几个重要特征:嵌入式系统的几个重要特征:n(1)系统内核小系统内核小。由于嵌入式系统一般是应用于小型电子装置由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。的,系统资源相对有限,所以内核较之传统的操作系统要小得多。内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、内核体系结构设备驱动程
6、序、文件和网络系统,决定着系统的性能和稳定性。n(2)专用性强。专用性强。嵌入式系统的个性化很强,其中的软件系统和嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的程序的编译下载要和系统相结合,这种修改和通用软件
7、的“升级升级”是完全两个概念。是完全两个概念。1.2 嵌入式系统的特点嵌入式系统的特点n(3)系统精简系统精简。嵌入式系统一般没有系统软件和应用软件的明嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。控制系统成本,同时也利于实现系统安全。n(4)高实时性高实时性。高实时性的系统软件高实时性的系统软件(OS)是嵌入式软件的基是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和
8、高可靠性。质量和高可靠性。n(5)多任务的操作系统多任务的操作系统。嵌入式软件开发要想走向标准化,嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行;但是为了合理地调度多任务,利操作系统而直接在芯片上运行;但是为了合理地调度多任务,利用系统资源、系统函数以及专家库函数接口,用户必须自行选配用系统资源、系统函数以及专家库函数接口,用户必须自行选配RTOS(Real Time Operating System)RTOS(Real Time Operating System)开发平台
9、,这样才能保证开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量程序执行的实时性、可靠性,并减少开发时间,保障软件质量。1.2 嵌入式系统的特点嵌入式系统的特点n(6)专门的开发工具和环境。专门的开发工具和环境。系统开发需要开发工具系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。开发时往往有主机和目标机的概念,主机用于程序的开发,能进行开发
10、。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。目标机作为最后的执行机,开发时需要交替结合进行。【自举(bootstrapping)一词来自于人都是靠自身的“自举”机构站立起来的这一思想。计算机必须具备自举能力将自己所有的元件激活,以便能完成加载操作系统这一目的,然后再由操作系统承担起那些单靠自举代码无法完成的更复杂的任务。自举只有两个功能:加电自检和磁盘引导。】1.3 嵌入式系统的分类嵌入式系统的分类 (1)体系结构。普林斯顿结构()体系结构。普林斯顿结构(冯诺依曼结构)和哈佛结构)和哈佛结构(2)指令集。)指令集。CISC(复杂指令系统
11、)和(复杂指令系统)和RISC(精简指令系统)(精简指令系统)(见表(见表1-2,P4)(3)嵌入式处理器种类。一般可以将嵌入式处理器分成)嵌入式处理器种类。一般可以将嵌入式处理器分成4类,即类,即n嵌入式微处理器嵌入式微处理器(Micro Processor Unit,MPU)n嵌入式微控制器嵌入式微控制器(Micro Controller Unit,MCU单片机单片机)n嵌入式嵌入式DSP处理器处理器(Digital Signal Processor,DSP)n嵌入式片上系统嵌入式片上系统(System On Chip,SoC)(见表(见表1-3,P5)冯冯诺依曼结构诺依曼结构:单一存储、
12、统一编址、分时复用:单一存储、统一编址、分时复用哈佛结构:分开存储、独立编址、两倍带宽、效率更高哈佛结构:分开存储、独立编址、两倍带宽、效率更高CISC vs RISC1.4 嵌入式系统的应用嵌入式系统的应用(1)工业控制)工业控制 基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的经有大量的8、16、32 位嵌入式微控制器在应用中,网络化是提位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网
13、设备监测、石油化工制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是系统。就传统的工业控制产品而言,低端型采用的往往是8位单位单片机。但是随着技术的发展,片机。但是随着技术的发展,32位、位、64位的处理器逐渐成为工业位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。控制设备的核心,在未来几年内必将获得长足的发展。(2)交通管理)交通管理 在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌统技术已经获得了广泛的应用,内嵌GPS模块
14、、模块、GSM模块的移动模块的移动定位终端已经在各种运输行业获得了成功的使用。目前定位终端已经在各种运输行业获得了成功的使用。目前GPS设备设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。随时随地找到你的位置。1.4 嵌入式系统的应用嵌入式系统的应用(3)信息家电)信息家电 这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使你不在家里,智能化将引领人们的生活步入一个崭新的空间。即使你不在家里,也可以
15、通过电话线、网络进行远程控制。在这些设备中,嵌入式也可以通过电话线、网络进行远程控制。在这些设备中,嵌入式系统将大有用武之地。系统将大有用武之地。(4)家庭智能管理系统)家庭智能管理系统 水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准确和更安全的性能。目前在服务领域,如远程点菜器等已经体现确和更安全的性能。目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。了嵌入式系统的优势。(5)POS网络及电子商务网络及电子商务
16、 公共交通无接触智能卡公共交通无接触智能卡(Contactless Smartcard,CSC)发行系发行系统,公共电话卡发行系统,自动售货机,各种智能统,公共电话卡发行系统,自动售货机,各种智能ATM终端将全终端将全面走入人们的生活,到时手持一卡就可以行遍天下。面走入人们的生活,到时手持一卡就可以行遍天下。1.4 嵌入式系统的应用嵌入式系统的应用(6)环境工程与自然)环境工程与自然 水文资料实时监测,防洪体系及水土质量监测、堤坝安全,地水文资料实时监测,防洪体系及水土质量监测、堤坝安全,地震监测网,实时气象信息网,水源和空气污染监测。在很多环境震监测网,实时气象信息网,水源和空气污染监测。在
17、很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。恶劣,地况复杂的地区,嵌入式系统将实现无人监测。(7)国防与航天)国防与航天 嵌入式芯片的发展将使机器人在微型化,高智能方面优势更加嵌入式芯片的发展将使机器人在微型化,高智能方面优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和服务明显,同时会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。领域获得更广泛的应用。1.5 嵌入式系统的发展嵌入式系统的发展纵观嵌入式系统的发展历程,大致经历了以下纵观嵌入式系统的发展历程,大致经历了以下3个阶段个阶段:n以嵌入式微处理器为基础的初级嵌入式系统以嵌入式微处理器为基础的初
18、级嵌入式系统n以嵌入式操作系统为标志的中级嵌入式系统以嵌入式操作系统为标志的中级嵌入式系统n以以Internet和实时多任务操作系统为标志的高和实时多任务操作系统为标志的高级嵌入式系统级嵌入式系统发展趋势发展趋势嵌入式技术与嵌入式技术与Internet技术的结合正在推动着嵌入式技术的技术的结合正在推动着嵌入式技术的飞速发展,为嵌入式市场展现了美好的前景,同时也对飞速发展,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,未来嵌入式系统的几嵌入式生产厂商提出了新的挑战,未来嵌入式系统的几大发展趋势:大发展趋势:(1)嵌入式系统的开发成了一项系统工程,开发厂商不仅)嵌入式系统的开
19、发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。件开发工具和软件支持包。(2)网络化、信息化的要求随着)网络化、信息化的要求随着Internet技术的成熟和带技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。网络互联成为必然趋势。发展趋势发展趋势(3)未来的嵌入式设备为了适应网络发展的要求,必然要求)未来的嵌入式
20、设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。传统的单片机对于网络支持硬件上提供各种网络通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持了支持TCP/IP协议,还有的支持协议,还有的支持IEEE1394、USB、CAN、Bluetooth或或IrDA通信接口中的一种或者几种,同时也需要通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。软件方面提供相应的通信组网协议软件和物理层驱动软件。软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入系统系统内核支
21、持网络模块,甚至可以在设备上嵌入Web浏浏览器,真正实现随时随地用各种设备上网。览器,真正实现随时随地用各种设备上网。(4)精简系统内核,优化关键算法,降低功耗和软硬成本。)精简系统内核,优化关键算法,降低功耗和软硬成本。(5)提供更加友好的多媒体人机交互界面。)提供更加友好的多媒体人机交互界面。1.6 通用计算机与嵌入式系统对比通用计算机与嵌入式系统对比硬件平台比较软件平台比较返回2.STM32简介简介nSTM32系列基于专为要求高性能、低成本、低功耗的系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的嵌入式应用专门设计的ARM Cortex-M3内核。内核。n按性能分成两个不同的
22、系列:按性能分成两个不同的系列:STM32F103“增强型增强型”系列和系列和STM32F101“基本型基本型”系列。系列。n增强型系列时钟频率达到增强型系列时钟频率达到72MHz,是同类产品中性能,是同类产品中性能最高的产品;基本型时钟频率为最高的产品;基本型时钟频率为36MHz,以,以16位产品位产品的价格得到比的价格得到比16位产品大幅提升的性能,是位产品大幅提升的性能,是16位产品位产品用户的最佳选择。用户的最佳选择。n两个系列都内置两个系列都内置32K128K的闪存,不同的是的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率的最大容量和外设接口的组合。时钟频率72MHz时,
23、时,从闪存执行代码,从闪存执行代码,STM32功耗功耗36mA,是,是32位市场上位市场上功耗最低的产品,相当于功耗最低的产品,相当于0.5mA/MHz。2.STM32简介简介n2.1 历史历史n2.2 产品介绍产品介绍n2.3 Cortex-M3内核内核n2.4 应用应用2.1 STM32历史历史n意法半导体意法半导体(STMicroelectronics)集团于集团于1987年年6月月成立,是由意大利的成立,是由意大利的SGS 微电子公司和法国微电子公司和法国Thomson 半导体公司合并而成。半导体公司合并而成。1998年年5月,月,SGS-THOMSON Microelectronic
24、s 将公司名称改为意法半将公司名称改为意法半导体有限公司导体有限公司,意法半导体是世界最大的半导体公司之意法半导体是世界最大的半导体公司之一。从成立之初至今,一。从成立之初至今,ST 的增长速度超过了半导体工的增长速度超过了半导体工业的整体增长速度。自业的整体增长速度。自1999年起,年起,ST 始终是世界十始终是世界十大半导体公司之一。大半导体公司之一。n2007年年6月月ST宣布了她的第一款基于宣布了她的第一款基于Cortex-M3并内并内嵌嵌32K128K闪存的闪存的STM32微控制器系列产品。微控制器系列产品。nARM公司在公司在2004年推出了年推出了CM3内核,经过内核,经过5年市
25、场的年市场的积累,包括积累,包括ST公司、公司、TI公司等一些半导体公司推出了公司等一些半导体公司推出了基于基于CM3内核的微控制器产品。内核的微控制器产品。ARMnARM(Advanced RISC Machines)是英国的一家微)是英国的一家微处理器企业,处理器企业,也可以认为是对一类微处理器的通称,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。还可以认为是一种技术的名字。n见表见表1-5(P10)nARM体系结构定义了指令集和基于这一体系结构下处体系结构定义了指令集和基于这一体系结构下处理器的编程模型。基于同样体系结构可以有多种处理理器的编程模型。基于同样体系结构可以有
26、多种处理器,每个处理器性能不同,所面向的应用也就不同。器,每个处理器性能不同,所面向的应用也就不同。nARMv7有三个分支,即:有三个分支,即:A-应用分支,面向应用,如手持设备。应用分支,面向应用,如手持设备。R-实时分支,面向一般的实时控制。实时分支,面向一般的实时控制。M-微处理机分支,面向深度嵌入系统。微处理机分支,面向深度嵌入系统。ARM处理器系列处理器系列2.2 Cortex-M3内核内核Cortex-M3Cortex-M3系列微处理器的主要特点如下:系列微处理器的主要特点如下:(1 1)Thumb-2 Thumb-2 指令集架构指令集架构(ISA,Instruction Set
27、Architecture)。(2 2)哈佛处理器架构,在加载)哈佛处理器架构,在加载/存储数据的同时能够执行指令取指。存储数据的同时能够执行指令取指。(3 3)三级流水线。)三级流水线。(4 4)32 32 位单周期乘法。位单周期乘法。(5 5)具备硬件除法。)具备硬件除法。(6 6)ThumbThumb状态和调试状态。状态和调试状态。(7 7)处理模式和线程模式。)处理模式和线程模式。(8 8)ISRISR(Interrupt Service Routine)的低延迟进入和退出。的低延迟进入和退出。(9 9)可中断)可中断-可继续的可继续的LDM/STMLDM/STM(批量传输数据的指令),
28、),PUSH/POPPUSH/POP。(1010)ARMv6ARMv6类型类型BE8/LEBE8/LE支持。支持。(字节不变式大端模式big-endian/小端模式little-endian)(1111)ARMv6 ARMv6 非对齐访问。非对齐访问。(1212)分支预测功能)分支预测功能 关于指令集关于指令集nCortexM3处理器采用处理器采用ARMv7-M架构,它包括所有的架构,它包括所有的16位位Thumb指令集和基本的指令集和基本的32位位Thumb-2指令集架构,指令集架构,Cortex-M3处理器不能执行处理器不能执行ARM指令集。指令集。nThumb-2在在Thumb指令集架构
29、(指令集架构(ISA)上进行了大量的改进,它)上进行了大量的改进,它与与Thumb相比,具有更高的代码密度并提供相比,具有更高的代码密度并提供16/32位指令的更高位指令的更高性能。性能。n为兼容数据总线宽度为为兼容数据总线宽度为16位的应用系统,位的应用系统,ARM体系结构除了支持体系结构除了支持执行效率很高的执行效率很高的32位位ARM指令集以外,同时支持指令集以外,同时支持16位的位的Thumb指令集。指令集。nThumb指令集是指令集是ARM指令集的一个子集,是针对代码密度问题指令集的一个子集,是针对代码密度问题而提出的,它具有而提出的,它具有16位的代码宽度。与等价的位的代码宽度。与
30、等价的32位代码相比较,位代码相比较,Thumb指令集在保留指令集在保留32位代码优势的同时,大大的节省了系统位代码优势的同时,大大的节省了系统的存储空间。的存储空间。Cortex-M3只支持最新的只支持最新的Thumb-2指令集,这样设计的指令集,这样设计的优势在于:优势在于:n免去免去Thumb和和ARM代码的互相切换,对于早期的处理器来说,代码的互相切换,对于早期的处理器来说,这种切换会降低性能。这种切换会降低性能。nThumb-2指令集的设计是专门面向指令集的设计是专门面向C语言的,切包括语言的,切包括If/Then结构、硬件除法以及本地位域操作。结构、硬件除法以及本地位域操作。nTh
31、umb-2指令集允许用户在指令集允许用户在C代码层面维护修改程序。代码层面维护修改程序。nThumb-2指令集也包含了调用汇编代码的功能。指令集也包含了调用汇编代码的功能。综合以上优势,新产品的开发将更易于实现,上市时间综合以上优势,新产品的开发将更易于实现,上市时间也大为缩短。也大为缩短。三级流水线三级流水线-取指、译码、执行取指、译码、执行关于工作状态关于工作状态Coretx-M3处理器有处理器有2种工作状态。种工作状态。nThumb状态:这是状态:这是16位和位和32位位“半字对齐半字对齐”的的Thumb和和Thumb-2指令的执行状态。指令的执行状态。n调试状态:处理器停止并进行调试,
32、进入该状态。调试状态:处理器停止并进行调试,进入该状态。关于工作模式关于工作模式Cortex-M3处理器支持处理器支持2种工作模式:线程模式和处理模式。种工作模式:线程模式和处理模式。n在复位时处理器进入在复位时处理器进入“线程模式线程模式”,异常返回时也会进入,异常返回时也会进入该模式,特权和用户(非特权)模式代码能够在该模式,特权和用户(非特权)模式代码能够在“线程模线程模式式”下运行。下运行。n出现异常模式时处理器进入出现异常模式时处理器进入“处理模式处理模式”,在处理模式下,在处理模式下,所有代码都是特权访问的。所有代码都是特权访问的。关于中断关于中断nCortex-M3的一个创新在于
33、嵌套中断向量控制器的一个创新在于嵌套中断向量控制器(NVIC,Nested Vectored Interrupt Controller),),是是Cortex-M3内部的独有集成单元。内部的独有集成单元。nNVIC 提供如下的功能:提供如下的功能:n可嵌套中断支持可嵌套中断支持n向量中断支持向量中断支持n动态优先级调整支持动态优先级调整支持n中断延迟大大缩短中断延迟大大缩短n中断可屏蔽中断可屏蔽ARM数据存储格式数据存储格式nCortex-M3 处理器能够以小端格式或大端格式处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始终使访问存储器中的数据字,而访问代码时始终使用小端格式
34、。用小端格式。n小端格式是小端格式是 ARM 处理器默认的存储器格式。处理器默认的存储器格式。2.3 产品介绍产品介绍n在在STM32F105和和STM32F107互连型系列微控制器之互连型系列微控制器之前,意法半导体已经推出前,意法半导体已经推出STM32基本型系列、增强型基本型系列、增强型系列、系列、USB基本型系列、增强型系列;新系列产品沿基本型系列、增强型系列;新系列产品沿用增强型系列的用增强型系列的72MHz处理频率。内存包括处理频率。内存包括64KB到到256KB闪存和闪存和 20KB到到64KB嵌入式嵌入式SRAM。n新系列采用新系列采用LQFP64、LQFP100和和LFBGA
35、100三种封三种封装,不同的封装保持引脚排列一致性,结合装,不同的封装保持引脚排列一致性,结合STM32平平台的设计理念,开发人员通过选择产品可重新优化功台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。满足个性化的应用需求。nLQFP也就是薄型QFP(Low-profile Quad Flat Package)指封装本体厚度为1.4mm的QFP,是日本电子机械工业会制定的新QFP外形规格所用的名称。nQFP封装:这种技术的中文含义叫四方扁平式封装技术(Quad Flat Packag
36、e),该技术实现的CPU芯片引脚之间距离很小,管脚很细。一般大规模或超大规模集成电路采用这种封装形式,其引脚数一般都在100以上。该技术封装CPU时操作方便,可靠性高;而且其封装外形尺寸较小,寄生参数减小,适合高频应用;该技术主要适合用SMT表面贴装技术在PCB上安装布线。nLFBGA封装:也就是薄型FBGAnFBGA(Fine-Pitch Ball Grid Array:细间距球栅阵列)是一种在底部有焊球的面阵引脚结构,使封装所需的安装面积接近于芯片尺寸。BGA是英文Ball Grid Array Package的缩写,即球栅阵列封装。2.3 产品介绍产品介绍n基本型:基本型:STM32F1
37、01R6,STM32F101C8,STM32F101R8,STM32F101V8,STM32F101RB,STM32F101VBn增强型:增强型:STM32F103C8,STM32F103R8,STM32F103V8,STM32F103RB,STM32F103VB,STM32F103VE,STM32F103ZESTM32型号的说明型号的说明以以STM32F103RBT6这个型号的芯片为例,该型号的组成为这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:个部分,其命名规则如下:nSTM32:STM32代表代表ARM Cortex-M3内核的内核的32位微控制器。位微控制器。nF:F代表
38、芯片子系列。代表芯片子系列。n103:103代表增强型系列。代表增强型系列。nR:R这一项代表引脚数,其中这一项代表引脚数,其中T代表代表36脚,脚,C代表代表48脚,脚,R代代表表64脚,脚,V代表代表100脚脚,Z代表代表144脚。脚。nB:B这一项代表内嵌这一项代表内嵌Flash容量,其中容量,其中6代表代表32K字节字节Flash,8代表代表64K字节字节Flash,B代表代表128K字节字节Flash,C代表代表256K字字节节Flash,D代表代表384K字节字节Flash,E代表代表512K字节字节Flash。nT:T这一项代表封装,其中这一项代表封装,其中H代表代表BGA封装,
39、封装,T代表代表LQFP封封装装,U代表代表VFQFPN封装。封装。n6:6这一项代表工作温度范围,其中这一项代表工作温度范围,其中6代表代表-40-85,7代表代表-40-105。STM32F103RBT6封装引脚图封装引脚图2.4 STM32F103性能性能nSTM32F系列属于中低端的系列属于中低端的32位位ARM微控制器,该系微控制器,该系列芯片是意法半导体(列芯片是意法半导体(ST)公司出品,其内核是)公司出品,其内核是Cortex-M3。n该系列芯片按片内该系列芯片按片内Flash的大小可分为三大类:的大小可分为三大类:n小容量(小容量(16K和和32K)、)、n中容量(中容量(6
40、4K和和128K)、)、n大容量(大容量(256K、384K和和512K)。)。n芯片集成有芯片集成有USB,CAN,最多,最多8个定时器,个定时器,2个个ADC,SPI,IIC,USB,UART等多种功能。等多种功能。2.4 STM32F103性能性能n内核:内核:ARM32位位Cortex-M3 CPU,最高工作频率,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。单周期乘法和硬件除法。n存储器:存储器:片上集成片上集成32512KB的的Flash存储器。存储器。6 64KB的的SRAM存储器。存储器。n时钟、复位和电源管理:时钟、复位和电源管理:2.0 3.6V
41、的电源供电和的电源供电和I/O接口的驱动电接口的驱动电压;上电压;上电/断电复位;断电复位;4 16MHz的晶振;内嵌出厂前调校的的晶振;内嵌出厂前调校的8MHz RC振荡电路;内部振荡电路;内部40kHz的的RC振荡电路;用于振荡电路;用于CPU时钟的时钟的PLL(Phase Locked Loop,锁相环);带校准用于锁相环);带校准用于RTC(real-time clock)的)的32kHz的晶振。可编程电压检测(的晶振。可编程电压检测(PVD)。)。n低功耗:低功耗:3种低功耗模式:休眠,停止,待机模式。为种低功耗模式:休眠,停止,待机模式。为RTC和备份和备份寄存器供电的寄存器供电的
42、VBAT(电池引脚)。(电池引脚)。n调试模式:调试模式:串行调试(串行调试(SWD)和)和JTAG接口。接口。nDMA(Direct Memory Access):12通道通道DMA控制器。支持的外设:控制器。支持的外设:定时器,定时器,ADC,DAC,SPI,IIC和和UART。n2个个12位的位的us级的级的A/D转换器(转换器(16通道)通道):A/D测量范围:测量范围:0-3.6 V。双采样和保持能力。片上集成一个温度传感器。双采样和保持能力。片上集成一个温度传感器。2.4 STM32F103性能性能n2通道通道12位位D/A转换器转换器:STM32F103xC,STM32F103x
43、D,STM32F103xE独有。独有。n最多高达最多高达112个的快速个的快速I/O端口端口:根据型号的不同,有:根据型号的不同,有26,37,51,80,和,和112的的I/O端口,所有的端口都可以映射到端口,所有的端口都可以映射到16个外部中断向个外部中断向量。除了模拟输入,所有的都可以接受量。除了模拟输入,所有的都可以接受5V以内的输入。以内的输入。n最多多达最多多达11个定时器个定时器:4个个16位定时器,每个定时器有位定时器,每个定时器有4个个IC/OC/PWM或者脉冲计数器。或者脉冲计数器。2个个16位的位的6通道高级控制定时器:通道高级控制定时器:最多最多6个通道可用于个通道可用
44、于PWM输出。输出。2个看门狗定时器(独立看门狗个看门狗定时器(独立看门狗和窗口看门狗)。和窗口看门狗)。Systick定时器:定时器:24位倒计数器。位倒计数器。2个个16位基本位基本定时器用于驱动定时器用于驱动DAC。n最多多达最多多达13个通信接口个通信接口:2个个IIC接口。接口。5个个USART接口。接口。3个个SPI接口,两个和接口,两个和IIS复用。复用。CAN接口(接口(2.0B)。)。USB 2.0全速接口。全速接口。SDIO接口。接口。nECOPACK封装封装:STM32F103xx系列微控制器采用系列微控制器采用ECOPACK封封装形式(装形式(一种无铅的BGA封装)。)
45、。2.5 应用应用返回3.教学开发板教学开发板返回4 工程模板的建立工程模板的建立4.1 ARM Cortex-M3处理器编程环境处理器编程环境需要准备的资料需要准备的资料:n1.STM32F10 x_StdPeriph_Lib_V3.5.0(这是这是ST官网下载的固件库完整版官网下载的固件库完整版)n2.安装安装MDK4.70a(Keil)n3.注册注册License(破解破解,如果不破解只能支持如果不破解只能支持32K的代码的代码)安装成功后,桌面上安装成功后,桌面上Keil4显示图标显示图标n固件库是压缩文件,解压缩后,准备编程时用。固件库是压缩文件,解压缩后,准备编程时用。4.2 新建
46、工程输入工程名,保存选择CPU,STM32F103VBn弹出对话框弹出对话框“Copy STM32 Startup Code to project.”,询问是否添加启动代码到我们的工程中,询问是否添加启动代码到我们的工程中,这里我们选择这里我们选择“否否”,因为我们使用的,因为我们使用的ST固件库文固件库文件已经包含了启动文件。件已经包含了启动文件。n接下来,在接下来,在Template工程目录下面,新建工程目录下面,新建3个个文件夹文件夹 CORE,USER,STM32F10 x_FWLib。nUSER用来放我们主函数文件用来放我们主函数文件main.c,以及其他以及其他包括包括system
47、_stm32f10 x.c 等等,等等,nCORE用来存放启动文件等,用来存放启动文件等,nSTM32F10 x_FWLib文件夹顾名思义用来存放文件夹顾名思义用来存放ST官方提供的库函数源码文件。官方提供的库函数源码文件。n还可以新建一个还可以新建一个OUTPUT文件夹,用来放。文件夹,用来放。HEX等编译输出的文件。等编译输出的文件。n下面要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。n我们只用到我们只用到arm目录下面的目录下面的startup_stm32f10 x_md.s文文件,这个文件是针对中等容量芯片的启动文件。件,这个文件是针对中等容量芯片的启动文件。n其他两个
48、主要的为其他两个主要的为startup_stm32f10 x_ld.s为小容量,为小容量,startup_stm32f10 x_hs.c为大容量芯片的启动文件。这为大容量芯片的启动文件。这里里copy进来是方便其他开发者使用小容量或者大容量芯进来是方便其他开发者使用小容量或者大容量芯片的用户。片的用户。将目录下面的将目录下面的src、inc文件夹文件夹copy到到STM32F10 x_FWLib文件夹下面。文件夹下面。src存放的是固件库的存放的是固件库的.c文件,文件,inc存放的是存放的是对应的对应的.h文件,每个外设对应一个文件,每个外设对应一个.c文件和一个文件和一个.h头文件。头文件
49、。下面将这些文件加入我们的工程中去。右键点击下面将这些文件加入我们的工程中去。右键点击Target1,选择选择Manage Components Project Targets一栏,将一栏,将Target名字修改为名字修改为Template,然后然后在在Groups一栏删掉一个,建立三个一栏删掉一个,建立三个Groups:USER,CORE,FWLIB.点击点击OK.n下面我们往Group里面添加我们需要的文件。右键点击点击Tempate,选择选择Manage Components.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的Add Files,定位到我们刚才
50、建立的目录STM32F10 x_FWLib/src下面,将里面所有的文件选中(Ctrl+A),然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件n下面我们点击编译按钮下面我们点击编译按钮 编译工程,编译工程,可以看到很多报错,因为找不到库文件。可以看到很多报错,因为找不到库文件。n下面要告诉MDK,在哪些路径之下搜索相应的文件。n回到工程主菜单,点击魔术棒,出来一个菜单,然后点击 c/c+选项.然后点击Include Paths右边的按钮。弹出一个添加path的对话框,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录