版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统设计西安邮电大学计算机学院王忠民2025/11/28课程概述—课程教学安排
授课学时(次数)24H(上课8次)+24H(实验开发—课堂汇报或课下开发)
第1章嵌入式系统概述(1次)第一篇内核篇(
基于ARM-Cortex-M3核)第2章ARM-Cortex-M3微处理器体系结构(1次)第3章ARM-Cortex-M3指令系统(1)第4章基于ARM-Cortex-M3核的程序设计(2)第二篇片内外设篇(基于STM32F103芯片)
第5章STM32微控制器(1次)第6章基于STM32F103微控制器的嵌入式系统开发基础(1)第7-12章STM32F103片内资源(GPIO,定时器,中断,UART,ADC,DMA等)(1次)每组学生讲各自的IO(8次)第三篇系统篇(基于Keil开发平台)第13章嵌入式系统开发(0次)本章承前启后,在前四章介绍了ARM公司推出的CortexM3内核体系结构、指令系统以及程序设计技术之后,从本章开始介绍意法半导体公司基于ARMCortexM核推出的STM32系列微控制器。STM32系列微控制器具有多种型号,适用于各种不同的应用需求。STM32F103系列微控制器是STM32系列中的一个重要分支,它采用了ARMCortexM3内核,运行频率可达到72MHz,是目前使用较多的一款经典STM32微控制器系列,本书后续部分将围绕该系列微控制器进行介绍。(瑞芯微RK3588芯片:4个ARMCortex-A55CPU核心;1个GPUARMMali-G52MP2;人工智能专用计算资源NPU(自研);VPU计算资源(视频编解码专用支持格式:H.264)
)本章首先对基于CortexM3内核的STM32系列微控制器做总体概述,然后从系统架构、存储器结构、中断系统、时钟系统、引脚定义以及启动配置等多个方面进行详述,并在此基础上构建一个基于STM32F103的最小系统。本章是后续各章学习的基础,也是基于STM32F103微控制器的嵌入式应用开发的起点。尽管STM32微控制器有很多系列,但STM32各个系列微控制器的开发非常相似,在掌握了STM32F103后,读者能够触类旁通,举一反三,很快便能将应用移植到STM32其他系列的微控制器上。第5章STM32F103微控制器2025/11/28本章学习目的
了解STM32系列微控制器的分类,熟悉STM32F103小容量产品、中容量产品和大容量产品各自的特点。掌握STM32F103微控制器芯片的系统组成、存储器结构、中断系统、时钟系统、引脚以及启动过程等。熟悉STM32F103最小系统的各部分的组成,学会构建STM32F103微控制器的最小系统,重点掌握最小系统的电源管理、时钟树结构及应用等。第5章STM32F103微控制器学习目的2025/11/28第5章STM32F103微控制器(1)5.1STM32系列微控制器概述
5.1.1STM32系列微控制器 5.1.2STM32F103系列微控制器 5.2STM32F103微控制器组成
5.2.1系统架构 5.2.2存储结构 5.2.3中断系统 第5章STM32F103微控制器(2)5.2.4时钟系统 5.2.5引脚定义 5.2.6启动配置 5.3STM32F103微控制器最小系统 5.3.1电源电路 5.3.2时钟电路 5.3.3复位电路 5.3.4调试与下载电路 第5章STM32F103微控制器学习内容2025/11/28目录第5章STM32F103微控制器(1)5.1STM32系列微控制器概述 5.1.1STM32系列微控制器 5.1.2STM32F103系列微控制器 5.2STM32F103微控制器组成 5.2.1系统架构 5.2.2存储结构 5.2.3中断系统
第5章STM32F103微控制器2025/11/28第5章STM32F103微控制器–基于STM32微控制器工程的构建涉及的软件需要的软件清单:1、Keil公司的MDK5集成开发环境:自带ARM软件包,基于该包可以构建基于CortexM3核的存汇编工程以前均基于此构建工程2、支持STM32F1系列微控制器的支持包:下载该支持包Keil.STM32F1xx_DFP.1.0.5.pack,点击将其安装到MDK5相应目录下这样就可以构建基于STM32F1系列微控制器的工程了3、STM32F10x系列标准外设库:STM32F10x_StdPeriph_Lib_V3.6.0—为用户提供了片内IO相关的函数库,用户在构建工程时可以通过这些函数的调用来进行系统的开发2025/11/28第5章STM32F103微控制器–基于STM32微控制器工程的构建涉及的软件需要的软件清单:1、Keil公司的MDK5集成开发环境:自带ARM软件包,基于该包可以构建基于CortexM3核的存汇编工程以前均基于此构建工程2、支持STM32F1系列为控制器的支持包:
下载该支持包Keil.STM32F1xx_DFP.2.4.1.pack,点击将其安装到MDK5相应目录下这样就可以构建基于STM32F1系列微控制器的工程了3、STM32F10x系列标准外设库:STM32F10x_StdPeriph_Lib_V3.6.0—为用户提供了片内IO相关的函数库,用户在构建工程时可以通过这些函数的调用来进行系统的开发STM32F1系列微控制器的支持包Keil.STM32F1xx_DFP.2.4.1.pack下载:/packs/?q=STM32F1&pack-search=DFP(DeviceFamilyPack)是ARM和KeilMDK生态系统中的一个软件包概念。它不是一个独立的软件,而是一个包含了针对特定微控制器系列(在这里是STM32F1系列)的所有必要支持文件的集合。一个DFP通常包含以下核心内容:设备启动文件:用汇编和C语言编写的启动代码,用于初始化堆栈指针、设置中断向量表等。系统初始化文件:配置系统时钟、PLL等的文件。外设寄存器定义头文件:例如stm32f1xx.h,它定义了芯片所有外设(如GPIO,USART,SPI,I2C等)的寄存器和地址,让你可以用C语言来读写这些寄存器。链接器脚本:告诉链接器如何将代码和数据分配到芯片的Flash和RAM中。Flash编程算法:用于在调试时,将编译好的程序下载到芯片的Flash存储器中。示例代码和模板:有时也会包含一些简单的工程模板。2025/11/28第5章STM32F103微控制器–基于STM32微控制器工程的构建涉及的软件需要的软件清单:1、Keil公司的MDK5集成开发环境:自带ARM软件包,基于该包可以构建基于CortexM3核的存汇编工程以前均基于此构建工程2、支持STM32F1系列为控制器的支持包:
下载该支持包Keil.STM32F1xx_DFP.1.0.5.pack,点击将其安装到MDK5相应目录下这样就可以构建基于STM32F1系列微控制器的工程了3、STM32F10x系列标准外设库:STM32F10x_StdPeriph_Lib_V3.6.0—为用户提供了片内IO相关的函数库,用户在构建工程时可以通过这些函数的调用来进行系统的开发STM32F10x系列标准外设库:STM32F10x_StdPeriph_Lib_V3.6.0下载:/en/embedded-software/stsw-stm32054.html#get-software2025/11/28第5章STM32F103微控制器–基于STM32微控制器工程的构建过程工程构建步骤:1、构建用来存放工程文件的文件夹2、在MDK5中新建基于某款微控制器芯片的工程,将上面建好的文件夹中的相关文件关联到工程中3、在目标选项卡(点击魔术棒)对相关选项进行设置:如头文件的路径,输出文件的存放路径等等。2025/11/28以下是按照推出的时间顺序排列的Cortex-M系列内核及其特点:1.
Cortex-M3(2004年):具有32位架构,支持Thumb-2指令集,采用三级流水线,具有较高的性能和代码密度,适用于多种实时性要求较高的嵌入式应用。2.
Cortex-M0(2009年):32位ARMv6-M架构,成本和功耗低,适用于简单、对资源要求不高的嵌入式场景。3.
Cortex-M1(2009年):性能在M0和M3之间,用于对成本敏感又需一定性能的应用。4.
Cortex-M0+(2012年):是M0的增强版,有更高时钟速度、单周期I/O端口访问和位带技术等,提升了性能和功能。5.
Cortex-M4(2010年):在M3基础上增加DSP指令和单精度浮点单元,适合电机控制、工业应用等对数字信号处理有需求的场景。6.
Cortex-M7(2013年):采用6级流水线和分支预测技术,计算能力强,适用于高端工业控制等对性能要求高的应用。7.
Cortex-M23(2016年):面向物联网终端设备,功耗和成本低,有一定安全性和实时性。8.
Cortex-M33(2016年):在M23基础上增加更多安全特性,如内存保护单元、加密加速器等,适用于对安全性要求高的应用。9.
Cortex-M35P(2017年):具有特定功能和应用场景,可能用于对性能、功能有特殊要求的设备。10.
Cortex-M55(2020年):双发射架构,能实现确定性对称多处理,适用于对实时性和处理能力要求高的领域。11.
Cortex-M85(2021年):Cortex-M系列中性能较高的内核,具备更强处理能力和浮点运算能力,适用于对计算性能要求极高的嵌入式应用。第5章STM32F103微控制器
CortexM系列内核(32位架构)的发展友情链接:/LFQyG6H6KUw/2025/11/28第5章STM32F103微控制器--STM32系列微控制器
基于ARM公司推出的CortexM3内核,目前已有数十家半导体厂商购买了IP授权,并根据各自的市场定位和自身的技术积累,设计和生产了不同的基于CortexM3的微控制器。
目前,市场上常见的基于CortexM3的微控制器芯片有意法半导体公司的
STM32F103微控制器(ST指意法半导体公司,M指微控制器,32指控制器为32位)、德州仪器公司的LM3S8000微控制器和恩智浦公司的LPC1700微控制器等,其应用遍及工业控制、消费电子、仪器仪表、智能家居等各个领域。STM32产品线主要基于其内核架构和应用特性进行分类,主要分为主流产品、高性能产品和超低功耗产品三类:主流产品:如STM32F0、STM32F1、STM32F3等,这些微控制器采用常见的ARMCortex-M内核,如Cortex-M0和CortexM3/M4。它们适用于大多数常规应用,具有适中的性能和功耗表现,并且拥有丰富的外设接口和功能。高性能产品:如STM32F2、STM32F4、STM32F7等,这些微控制器基于更高级的ARMCortex-M内核,如Cortex-M7,具有更高的主频和更强大的处理能力。它们适用于需要高性能计算和复杂任务处理的应用,如图像处理、机器学习和工业控制等。超低功耗产品:如STM32L0、STM32L1、STM32L4等,专为低功耗应用设计。这些微控制器采用特殊的内核和节能技术,以降低功耗,从而适用于需要长时间运行或电池供电的应用,如无线传感器网络、智能家居等。2025/11/28意法半导体STM32芯片“F”系列(基础型或通用型)微控制器芯片型号主要有:STM32F0:属于入门级产品,具有较低的成本和功耗,适用于一些对资源要求不高的简单应用。
STM32F1:增强型系列,如STM32F103是比较经典的增强型系列,具有较高的性能和丰富的外设,适用于多种工业控制和消费电子等领域。STM32F3:高性能系列,在F1系列基础上进行了一些改进和增强,增加了一些特殊功能和外设,如更好的模拟功能等。STM32F4:高性能系列,带有DSP和FPU(浮点运算单元),能够处理更复杂的任务和算法,常用于对运算能力要求较高的应用,如视频处理、音频处理等。STM32F7:也是高性能系列,在F4的基础上进一步提升了性能和集成度,具有更高的主频和更多的内存资源等。第5章STM32F103微控制器意法半导体基于M系列核的F系列微控制器2025/11/28意法半导体STM32芯片除了F系列,还有以下系列:
1.
C0系列:入门级的32位微控制器,采用Cortex-M0+内核,适用于成本敏感型应用。
2.
G0系列:优化型的32位微控制器,采用Cortex-M0+内核,提供了更高的性能和更多的功能。
3.
L0系列:超低功耗型的32位微控制器,采用Cortex-M0+内核,适用于电池供电或节能型应用。
4.
L1系列:超低功耗型的32位微控制器,采用Cortex-M3内核,适用于电池供电或节能型应用。
5.
L4系列:超低功耗型的32位微控制器,采用Cortex-M4内核,提供了数字信号处理和浮点运算功能。
6.
L5系列:新一代安全超低功耗型的32位微控制器,采用Cortex-M33内核,提供了安全功能和图形加速。
7.
U5系列:新一代安全高性能超低功耗型的32位微控制器,采用Cortex-M33内核,提供了安全功能和图形加速。
8.
WB系列:双核无线型的32位微控制器,采用双核(M4+M0+)架构,提供了蓝牙5.0和802.15.4无线连接。
9.
WL系列:超低功耗无线型的32位微控制器,采用Cortex-M4内核,提供了LoRa和其他子1GHz无线连接。第5章STM32F103微控制器--意法半导体基于M系列核的其他系列微控制器2025/11/28第5章STM32F103微控制器--意法半导体基于M系列核的其他系列微控制器/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html2025/11/28STM32产品线的每个系列都针对特定的应用需求进行了优化,开发者可以根据项目的性能、功耗、成本和外设需求等选择合适的微控制器型号。此外,意法半导体还提供了丰富的开发工具、软件库和社区支持,帮助开发者高效地进行嵌入式系统开发。STM32F1系列微控制器是意法半导体(STMicroelectronics)基于ARMCortexM3内核推出的一款高性能32位微控制器。这个系列为满足工业、医疗和消费类市场的各种应用需求而设计,并在这些领域中占据了重要的地位。在STM32F1系列微控制器中,STM32F103是其中一个非常受欢迎的型号。STM32F103系列微控制器具有72MHz的主频,并且提供了丰富的外设接口和功能,使得它能够满足大多数嵌入式应用的需求。本书后续将以STM32F103微控制器展开介绍。尽管STM32微控制器有很多系列,但STM32各个系列微控制器的开发非常相似。在掌握了STM32F103的应用开发后,读者应该能够触类旁通,举一反三,很快便能将应用移植到STM32其他系列的微控制器上。第5章STM32F103微控制器--STM32F103系列微控制器2025/11/28图示为按照芯片引脚和片内Flash容量大小给出的STM32F103微控制器产品线图。按照STM32系列微控制器命名规则,从图中也可以看出,产品子系列名STM32F103后的第1个字符表示引脚数,第2字符表示片内Flash容量大小。图中给出了引脚数从36pin到144pin封装,片内Flash从16KB到1MB不等的部分STM32F103微控制器产品。第5章STM32F103微控制器--STM32F103微控制器产品线图
STM32F103微控制器产品线图T-36pinC-48pinR-64pinV-100pinZ—144pin小容量产品中容量产品大容量产品2025/11/281.小容量产品(low-densitydevices)小容量产品指的是Flash容量在16K~32K之间,以STM32F103x4和STM32F103x6命名的微控制器,一般具有较小的闪存存储器、RAM空间和较少的定时器和外设,具体参数参见STM32F103x4/6数据手册。2.中容量产品(medium-densitydevices)中等容量产品指的是Flash容量在64K~128K之间,以STM32F103x8和STM32F103xB命名的微控制器,具体参数参见STM32F103x8/B数据手册。3.大容量产品(high-densitydevices)大容量产品指的是Flash大小至少为256K,以STM32F103xC、STM32F103xD和STM32F103xE命名的微控制器,通常具有较大的闪存存储器、RAM空间和更多的片上外设,具体参数参见STM32F103xC/D/E数据手册。第5章STM32F103微控制器--STM32F103微控制器子产品系列不同Flash容量的STM32F103微控制器子产品图2025/11/28第5章STM32F103微控制器--STM32F103微控制器子产品对应的启动文件(ST提供)在STM32微控制器的启动文件命名中:Low-density(低密度)ldMedium-density(中密度)mdHigh-density(高密度)hdConnectivityline”(互联型)clVery-high-density/XL-density(极高密度/XL密度)--xlstartup_stm32f10x_hd_vl.s这样的文件名表示该文件是为STM32F1系列的高密度(HD)且属于ValueLine(VL)系列的微控制器编写的启动文件。这样的命名约定有助于开发者根据他们的硬件选择适当的启动文件。这些命名约定用于指示启动文件是为哪种内存密度的STM32F1微控制器编写的。不同密度的微控制器可能有不同的内存布局和特性,因此启动文件需要为每种密度进行适当的配置。意法半导体公司提供的标准库,为不同容量的微控制器提供的不同的启动文件请打开意法半导体提供的最新的标准函数库STM32F10x_StdPeriph_Lib_V3.6.0,观察其文件架构,找到上图所示的启动文件问题:如果我们选用了STM32F103R6微控制器芯片进行嵌入式系统开发,应该在固件库中选择哪个启动文件?目录第5章STM32F103微控制器(1)5.1STM32系列微控制器概述 5.1.1STM32系列微控制器 5.1.2STM32F103系列微控制器 5.2STM32F103微控制器组成 5.2.1系统架构 5.2.2存储结构 5.2.3中断系统
第5章STM32F103微控制器2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—系统架构STM32F103R6微控制器最小系统2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—系统架构计算机系统PC机目前主板上已没有早前插显卡的AGP插槽了,取而代之的是PCIex16
插槽GPU卡也插在该类插槽中2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—系统架构图5.3STM32的系统架构AHB-APB1桥AHB-APB2桥AHB总线矩阵STM32F103通过AHB总线矩阵、AHB总线、AHB-APB1桥以及AHB-APB2桥实现了CortexM3内核与片内ROM、片内SRAM、片内不同速度外设等之间的信息交换。AHB:AdvancedHigh-performanceBus,先进的高性能总线。APB:AdvancedPeripheralBus,先进的外围(外设)总线APB1:APB1是STM32中的低速外设总线。APB1总线上连接了一些低速外设和模块,如串口(USART2/3/4/5)、I2C(I2C1/2)、USB等。APB1的最大允许频率为36MHz。APB2:APB2是STM32中的高速外设总线。APB2总线上连接了一些高速外设和模块,如定时器(TIM)、ADC等。APB2的最大允许频率为72MHz2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—系统架构图5.3STM32的系统架构AHB-APB1桥AHB-APB2桥AHB总线矩阵STM32总线系统包括以下6部分。1.ICode总线ICode总线将CortexM3内核的指令总线与闪存Flash接口相连接,用于访问存储空间的指令,为32位的AHB总线,从存储器空间的0x00000000~0x1FFFFFFF区域进行取指令操作,指令预取在此总线上完成。2.DCode总线DCode总线将ARMCortexM3内核的DCode总线与闪存Flash存储器的数据接口相连接,用于访问该存储空间的数据,用于常量加载和调试访问。该总线为32位的AHB总线,从存储器空间的0x00000000~0x1FFFFFFF区域进行数据访问操作。3.System`总线System总线连接ARMCortexM3内核的系统总线(外设总线)到总线矩阵,用于访问指令、数据以及调试模块接口,为32位的AHB总线,负责0x20000000~0xDFFFFFFF和0xE0100000~0xFFFFFFFF地址空间上的片上SRAM、片上外设、片外RAM、片外外设以及私有外设等与CortexM3内核的联系。4.总线矩阵总线矩阵协调CortexM3内核系统总线和其他主控总线之间的访问仲裁管理。总线仲裁即总线判优控制,用于协调CortexM3内核的DCode和DMA对SRAM、闪存和外设的访问,当多个部件同时使用总线发送数据时,为避免冲突由总线控制器统一管理。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—系统架构图5.3STM32的系统架构AHB-APB1桥AHB-APB2桥AHB总线矩阵5.DMA总线DMA总线将DMA的AHB主控接口与总线矩阵相联,用于内存与外设之间的数据传输。DMA通过该总线访问AHB外设或执行存储器间的数据传输。6.APB总线APB(AdvancedPeripheralBus)总线用于连接CortexM3处理器和外围设备。STM32通过两个AHB-APB桥实现AHB与两个APB总线(APB1和APB2)之间的同步连接。APB1总线操作速度限于36MHz,通常用于连接速度较慢的外围设备。APB2总线操作速度限于72MHz,用于连接速度较快的外围设备。
在CortexM3内核的嵌入式系统中,当芯片复位后,出于功耗管理和初始化考虑,所有的外设时钟都会被关闭。这是为了确保系统启动时,各个外设都处于一个已知且一致的初始状态,同时减少不必要的功耗。在使用任何外设之前,开发者需要在相应的寄存器中使能(开启)该外设的时钟。这是因为外设的工作通常需要时钟信号来驱动,没有时钟信号,外设就无法正常工作。使能外设时钟的过程实际上是将相应的时钟信号连接到外设上,使外设能够开始工作。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—系统架构STM32F103R6内部结构STM32F103R6时钟树意法半导体网站上搜索下载相关芯片的数据手册:输入芯片名称搜索STM32F103r6/?activeSource=%22Search%22&queryText=%22STM32F103R6%22&language=%22en%22&pageSearch=1&pageXRef=12025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构ARM公司的ARMCortexM3核预定义了存储器映射“大框架”。意法半导体的STM32F103微控制器采用ARMCortexM3的内核,因此,它遵循该大框架的存储器映射。STM32F103微控制器的4GB大小的空间也被划分为代码区、片上SRAM区、片上外设区、片外RAM区、片外外设区和系统区6部分,这些区域均通过不同的总线经过总线矩阵与ARMCortexM3内核相连,可将ARMCortexM3内核视为STM32F103微控制器的“CPU”,ARMCortexM3内核控制Flash程序存储器区、SRAM静态数据存储器区和所有外设的读/写操作。
2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构图5.4STM32F103RB的Flash代码区选项字节系统存储器保留程序存储器Flash根据BOOT引脚的配置,启动时用户程序会被放置到片内Flash、系统存储器或片内SRAM中,但在执行时,放置在不同位置的用户代码通常都会被映射到该区域来执行。0x080000000x07FFFFFF0x080200000x0801FFFF0x1FFFF0000x1FFFEFFF0x1FFFF8000x1FFFF7FF0x000000000x1FFFF80F1.代码区程序存储器Flash:CortexM3内核规定代码区的地址范围为0x00000000~0x1FFFFFFF,大小为512MB。但是,程序存储器(即用户Flash)的起始地址和大小由各个芯片制造商自己决定。意法半导体公司生产的STM32F103系列微控制器的片内Flash的起始地址是0x08000000,这个地址是程序开始执行的地方。不同微控制器芯片的片内Flash大小不一样,例如STM32F103RB微控制器中Flash的大小为128KB,如图5.4所示,即该芯片的程序存储器Flash地址范围为0x08000000~0x8001FFFF。在STM32中,Flash一般用来存储代码和一些定义为const的数据,这些数据在断电后不会丢失。系统存储器:STM32F103RB微控制器配置了从0x1FFFF800~0xlFFFF80F共2KB的Flash,用作系统存储器。2KB的系统存储器中存放STM32出厂时固化好的启动程序(Bootloader),利用启动程序可以将代码烧写到STM32的用户Flash中,实现ISP(ln-SystemProgramming,在线编程或在系统编程)。选项字节:
0x1FFFF800~0xlFFFF80F的16B的选项字节。这两块Flash(系统存储器和选项字节)的起始地址和空间大小在STM32F103微控制器所有产品中都是相同的。16字节(128位)的选项字节(OptionBytes)用于配置和存储与Flash存储器操作和系统行为相关的各种设置。这些选项字节提供了对微控制器行为的灵活控制,使开发人员能够根据应用需求定制微控制器的行为。在开发过程中,通常通过STM32的固件库函数或特定的寄存器操作来访问和修改这些选项字节。图中代码区的三个红框什么含义???2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构2.片上SRAM区CortexM3处理器内核规定片上SRAM区的地址范围为0x20000000~0x3FFFFFFF,大小为512MB。但是,片上数据存储器(即片上SRAM)挂载的起始地址和大小由各芯片生产商自己决定。意法半导体公司生产的STM32F103系列微控制器SRAM容量从6KB到64KB不等,通常SRAM起始地址为0x20000000。由于SRAM成本较高,片内集成的SRAM容量一般不会很大。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构3.片上外设区CortexM3处理器内核规定片上外设区的地址范围为0x40000000~0x5FFFFFFF,大小为512MB。意法半导体公司将片上外设区这512MB大小的区域根据外设速度的不同划分给3种不同的外设总线(APB1总线、APB2总线、AHB总线),用于搭载不同速度要求的外设,不同系列设置的片上外设的种类有一定出入,使用时需要到官网下载相关芯片的数据手册获取最新最全的芯片信息。这里以STM32F103x4&x6微控制器为例,其片内外设区的总线地址空间分配如图5.5所示。图5.5STM32F103x4&x6片内外设地址空间分配APB1总线基地0x40000000AHB总线基地0x40020000APB2总线基地0x400100000x400000000x4000FFFF0x400100000x4001FFFF0x400200000x5FFFFFFF挂载在AHB总线上的外设的寄存器地址空间挂载在APB2总线上的外设的寄存器地址空间挂载在APB1总线上的外设的寄存器地址空间见STM32F103x4&x6芯片数据手册29页图82025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构3.片上外设区APB1低速外设总线,其工作频率最高为36MHz,起止地址为0x40000000~0x4000FFFF,主要用于连接低速外设,如TIM2、TIM3、USART2、I2C、USB、PWR等。APB1总线外设的地址空间映射关系如图5.6所示。可以看出,0x40000000~0x4000FFFF共有64K个存储单元,每个片内外设都留有1K个存储单元(如为TIM2分配了从0x40000000到0x400003FF共1024个单元供其使用,而事实上TIM2也只使用很少的几个单元(寄存器)来对TIM2进行控制),理论上可以安排64个片内外设的存储器需求,而事实上大量的存储单元都被“保留”而没有使用。图5.6APB1总线外设的存储器地址空间2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构3.片上外设区APB2高速外设总线,其工作频率最高为72MHz,起止地址为0x40010000~0x40017FFF,主要用于连接高速外设,如GPIOA到GPIOG、ADC1、ADC2、ADC3、TIM1、TIM8等。APB2总线外设的地址空间如图5.7所示。图5.7APB2总线外设的存储器地址空间2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构3.片上外设区AHB高级高性能总线起止地址为0x40020000~0x5FFFFFFF,用于连接高速存储器、DMA以及高性能的外设。AHB总线外设的地址空间如图5.8所示。图5.8AHB总线外设的存储器地址空间RCC(复位和时钟控制)主要用于控制意法半导体芯片的时钟系统。它负责设置系统时钟SYSCLK,以及设置AHB、APB2和APB1等总线的分频因子,从而决定各条总线上的时钟频率,进而控制连接在这些总线上的各个外设的时钟。此外,RCC还能控制各个外设时钟的开启与关闭。通过RCC,可根据实际应用需求,灵活配置芯片的时钟系统,使各外设能在合适的时钟频率下工作,以实现高效、稳定的运行。CRC(循环冗余校验):主要用于保证数据存储和数据通讯的准确。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—存储结构4.片外RAM区CortexM3处理器内核规定片外RAM区的地址范围为0x60000000~0x9FFFFFFF,大小为1GB。5.片外外设区CortexM3处理器内核规定片外外设区的地址范围为0xA0000000~0xDFFFFFFF,大小为1GB。STM32F103微控制器的片外外设区是一个关键的功能区域,它使得STM32F103能够与其他外部设备,如传感器、执行器、存储器等,进行数据传输和控制。通过片外外设区,微控制器可以读取传感器的数据,控制执行器的动作,或者与外部存储器进行数据交换,这一功能区的存在大大扩展了微控制器的应用范围和灵活性。6.系统区CortexM3处理器内核规定系统区的地址范围为0xE0000000~0xFFFFFFFF,大小为512MB。CortexM3的私有外设(如NVIC、SYSTICK、FPB、DWT、ITM等)都位于该区域。NVIC(嵌套向量中断控制器):用于管理和控制芯片的中断系统,包括中断优先级设置、中断使能与禁止等。SysTick(系统滴答定时器):是一个简单的定时中断源,为操作系统提供时钟节拍,也可用于定时任务。
FPB(Flash编程模块):主要用于对芯片内部的Flash存储器进行编程、擦除等操作。
DWT(数据观察点和跟踪):能用于调试时观察数据的变化,设置数据观察点等。
ITM(指令跟踪宏单元):可在调试时跟踪指令执行,帮助开发人员了解程序运行流程。可以理解为内核外设2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—中断系统STM32F103中断源(1)内部异常:内部异常是指处理器在运行时遇到的一些特殊情况,这些情况需要中断正常的指令执行流程来进行处理。STM32F103的内部异常中断源通常包括硬件错误、软件错误或特定的内部事件,例如非法指令访问、除零错误等。当这些异常发生时,处理器会暂停当前的任务,转而执行相应的异常处理程序。内部异常中断有助于确保系统的稳定性和可靠性,避免由于错误或异常情况导致的程序崩溃或数据损坏。(2)片内外设中断:片内外设中断是指由微控制器内部外设产生的中断请求。STM32F103具有丰富的片内外设,如定时器、ADC、SPI、I2C、USART等。这些外设可以在特定事件发生时产生中断,通知处理器进行相应的处理。例如,定时器中断可以用于实现定时任务或周期性事件的处理;ADC转换完成中断可以在ADC转换完成后触发中断处理函数,以获取转换结果。(3)片外外设中断:片外外设中断是指由微控制器外部设备或信号产生的中断请求。这些外部中断源可以连接到微控制器的外部引脚,用于检测外部事件或信号的变化,如按键按下、传感器信号变化等。当外部事件发生时,外部中断源会触发中断请求,通知处理器进行相应的处理。片外外设中断使得微控制器能够与外部设备进行交互,并根据外部事件作出及时响应,实现与外部环境的实时通信和控制。图5.9STM32F103中断体系结构2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—中断系统STM32F103外部中断/事件控制器EXTIEXTI(EXTernalInterrupt/eventcontroller)是STM32微控制器中的外部中断/事件控制器。它负责处理来自微控制器外部引脚的中断请求和事件。EXTI提供了丰富的功能和配置选项,使得开发者能够灵活地配置和使用外部中断和事件。如图5.10所示,在STM32F103系列芯片中,EXTI外部中断控制器可以实现对19路中断/事件的管理,其中16个通道EXTI0~EXTI15对应于连接在APB2上的基本输入输出接口的引脚GPIOx_Pin0~GPIOx_Pin15,另外3个图中没有画出来,它们分别是:EXTI16连接PVD(ProgrammableVoltageDetector,可编程电压监测器,作用是监视供电电压)输出,EXTI17连接到RTC(RealTimeClock,实时时钟)闹钟事件和EXTI18连接到USB唤醒事件。连接GPIO引脚和EXTI的AFIO(AlternateFunctionI/O,复用功能输入输出)在STM32等微控制器中起到了关键的作用。它允许GPIO引脚具有多种功能,而不仅仅是作为普通的输入/输出引脚。通过AFIO的配置,GPIO引脚可以被重映射到不同的外设功能上,例如外部中断(EXTI)、串行通信(USART、I2C等)或其他特殊功能。对于开发人员来说,需要能够通过对AFIO的设置实现对外部中断的管理。图5.10STM32F103外部中断/事件管理机制2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—中断系统嵌套向量中断控制器NVIC嵌套向量中断控制器NVIC(NestedVectoredInterruptController)被集成在ARMCortexM3内核中,与中央处理器核心紧密耦合,从而实现低延迟的中断处理。NVIC最多可以支持256个中断/异常,包括16个内部异常和240个中断(来自片内或片外外设的中断),能够对这256个中断源实现可编程的优先级设置。异常由CortexM3内核产生,因此异常是任何芯片生产厂商修改不了的。
非内核异常的中断根据芯片的功能定位,其数量由各芯片厂商配置,数量为1~240不等。ARMCortexM3内核虽然理论上可以支持多达256种异常和中断,但一般的通用微控制器芯片MCU用不到这么多的中断。STM32F103系列芯片(含低小容量、中容量和大容量产品)目前支持的中断总数为76个,其中10个异常,60个中断(含片内外设中断和经过EXTI0~EXTI4的片外外设中断)。中断源:内部异常、内部外设中断和外部硬件中断2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—中断系统STM32F103中断向量表STM32F103的中断向量表是一张存储中断服务程序入口地址的表,如表5.1所示。每个中断源的中断服务程序的入口地址为32位,因此需要占用4个单元来存放。ARMCortexM3内核理论上可以支持256种异常和中断,因此,中断向量表就需要占用1024个单元。STM32F103的中断向量表通常位于Flash存储器的起始位置(0x00000000~0x000003FF)。在STM32F103的标准固件库中,中断向量表已经被预先定义好,并且与各个中断服务程序相关联。当STM32F103接收到中断请求时,它会根据中断类型查找中断向量表,找到对应的中断服务程序入口地址,并执行相应的中断服务程序。中断服务程序会处理中断事件,并在完成后返回,使处理器继续执行主程序。需要注意的是,中断向量表的配置和使用方式可能会因STM32F103的具体型号和固件库版本而有所差异。因此,在实际开发中,建议参考相关的技术文档或手册,以确保正确配置和使用中断向量表。2025/11/28第5章STM32F103
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 1886.388-2025食品安全国家标准食品添加剂二丁基羟基甲苯(BHT)
- 2025年AI客服训练师:用户反馈数据的模型迭代应用
- 医学教育PBL教学的统计效果与结果能力培养
- 装潢转让合同协议书
- 电力行业职业发展蓝图
- 医学影像云平台边缘节点优化
- 医学影像云在泌尿科诊断中实践
- 《新编应用文写作》-第八章
- 《经济学》-第5章 成本理论
- 医学影像AI验证结果的敏感度可视化
- 2026年山东潍坊市高三一模高考生物模拟试卷(含答案详解)
- DL∕T 1835-2018 燃气轮机及联合循环机组启动调试导则
- 电力系统经济学原理(第2版) 课件全套 第1-8章 引言、经济学基本概念-输电投资
- 如何建立健全的建筑企业管理体系
- 无人机驾驶员培训计划及大纲
- TB10092-2017 铁路桥涵混凝土结构设计规范
- 小学语文思辨性阅读与表达学习任务群解读及教学建议
- 公共营养师试题库及参考答案
- 吹风造型基础课件
- 急诊科护理质量考核标准
- 昆明医科大学第二附属医院进修医师申请表
评论
0/150
提交评论