嵌入式系统原理与应用 课件 第5章 STM32F103微控制器2_第1页
嵌入式系统原理与应用 课件 第5章 STM32F103微控制器2_第2页
嵌入式系统原理与应用 课件 第5章 STM32F103微控制器2_第3页
嵌入式系统原理与应用 课件 第5章 STM32F103微控制器2_第4页
嵌入式系统原理与应用 课件 第5章 STM32F103微控制器2_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统设计西安邮电大学计算机学院王忠民2025/11/28本章承前启后,在前四章介绍了ARM公司推出的CortexM3内核体系结构、指令系统以及程序设计技术之后,从本章开始介绍意法半导体公司基于ARMCortexM核推出的STM32系列微控制器。STM32系列微控制器具有多种型号,适用于各种不同的应用需求。STM32F103系列微控制器是STM32系列中的一个重要分支,它采用了ARMCortexM3内核,运行频率可达到72MHz,是目前使用较多的一款经典STM32微控制器系列,本书后续部分将围绕该系列微控制器进行介绍。本章首先对基于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微控制器第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调试与下载电路 3212025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统STM32F103微控制器主要有以下5种时钟源,其中三个用于生成系统时钟,另外两个用作片内的二级时钟。

用来产生系统时钟(SYSCLK)的三个时钟源为:

(1)HSE(HighSpeedExternal);

(2)HSI(HighSpeedInternal);

(3)PLL(PhaseLockedLoop)

另外还有两个二级时钟源:LSE(LowSpeedExternal)和LSI(LowSpeedInternal)

系统时钟源:

(1)HSE(HighSpeedExternal,高速外部时钟):可外接一个外部时钟源,或者通过OSC_IN和OSC_OUT引脚外接晶振,允许外接的晶振频率范围为4~16MHz,通常使用8MHz。特点:精度高,稳定。

(1)(2)(3)(4)(5)STM32F103时钟树1232025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统STM32F103微控制器主要有以下5种时钟源,其中三个用于生成系统时钟,另外两个用作片内的二级时钟。

用来生成系统时钟(SYSCLK)的三个时钟源为:

(1)HSE(HighSpeedExternal);

(2)HSI(HighSpeedInternal);

(3)PLL(PhaseLockedLoop)

另外还有两个二级时钟源:LSE(LowSpeedExternal)和LSI(LowSpeedInternal)

系统时钟源:

(2)HSI(HighSpeedInternal,高速内部时钟):由内部8MHz的RC振荡器生成,可作为系统时钟或经2分频后作为PLL输入。特点:时钟频率精度差,不稳定。(2)STM32F103时钟树111232025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统STM32F103微控制器主要有以下5种时钟源,其中三个用于生成系统时钟,另外两个用作片内的二级时钟。

用来驱动系统时钟(SYSCLK)的三个时钟源为:

(1)HSE(HighSpeedExternal);

(2)HSI(HighSpeedInternal);

(3)PLL(PhaseLockedLoop)

另外还有两个二级时钟源:LSE(LowSpeedExternal)和LSI(LowSpeedInternal)

系统时钟源:

(3)PLL(PhaseLockedLoop)时钟:锁相环,是一种反馈控制电路,用于外部输入时钟信号与内部振荡信号的同步(频率和相位相同),以确保输出频率的稳定。另一方面,也可用于倍频HSI或HSE,其时钟输入源可选择为HSI/2、HSI或者HSE,倍频可选择为2~16倍,但其输出频率最大不得超过72MHz。(1)(2)(3)(4)(5)STM32F103时钟树123(3)2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统STM32F103微控制器主要有以下5种时钟源,其中三个用于生成系统时钟,另外两个用作片内的二级时钟。

用来驱动系统时钟(SYSCLK)的三个时钟源为:

(1)HSE(HighSpeedExternal);

(2)HSI(HighSpeedInternal);

(3)PLL(PhaseLockedLoop)

另外还有两个二级时钟源:LSE(LowSpeedExternal)和LSI(LowSpeedInternal)

二级时钟源:

(4)LSE(LowSpeedExternal)低速外部时钟:通过OSC32_IN和OSC32_OUT引脚外接频率为32.768kHz的晶振,为RTC(实时时钟)提供低速高精度的时钟源。(1)(2)(3)(4)(5)STM32F103时钟树123(4)2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统STM32F103微控制器主要有以下5种时钟源,其中三个用于生成系统时钟,另外两个用作片内的二级时钟。

用来驱动系统时钟(SYSCLK)的三个时钟源为:

(1)HSE(HighSpeedExternal);

(2)HSI(HighSpeedInternal);

(3)PLL(PhaseLockedLoop)

另外还有两个二级时钟源:LSE(LowSpeedExternal)和LSI(LowSpeedInternal)

二级时钟源:

(5)LSI(LowSpeedInternal)低速内部时钟:由内部RC振荡器产生,频率约40kHz。LSI时钟源在微控制器中担当一个低功耗时钟源的角色,能够在停机和待机模式下保持运行。它主要用于为独立看门狗和自动唤醒单元提供时钟信号,尤其适用于对功耗要求较高的应用场合。(1)(2)(3)(4)(5)STM32F103时钟树123(5)2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统下面以左图所示的STM32F103时钟树,沿着(1)→(2)→(3)→(4)→(5)→(6)顺序,如何一步步产生用于驱动片内外设的系统时钟SYSCLK的。(1)OSC_IN和OSC_OUT:图中OSC_IN和OSC_OUT这两个引脚分别连接到8MHz外部晶振的两端,生成8MHz的高速外部时钟HSE。(2)PLLXTPRE:PLLXTPRE(HSEdividerforPLLentry)用于配置PLL的输入分频器。通过编程配置寄存器,可以选择PLLXTPRE的输出,实现对输入时钟的二分频或不分频。通常选择不分频,因此,经过PLLXTPRE后,输出仍然是8MHz的时钟信号。(3)PLLSRC:PLLSRC(PLLSourceSelection)用于选择PLL的输入源。PLLSRC允许用户选择将哪个时钟源作为PLL的输入。同样可以通过配置寄存器,选择PLLSRC的输出是高速外部时钟HSE或高速内部时钟HSI。通常,选择输出为高速外部时钟HSE。(4)PLL:8MHz的HSE经过PLL后,输出时钟称为PLLCLK,通过配置PLL寄存器,选择倍频系数PLLMUL(PLLmultiplicationfactor),可以决定输出的PLLCLK时钟的频率。为了使STM32F103满频工作,通常将倍频系数设为9,于是,经过PLL后,原来8MHz的时钟HSE变成了72MHz的时钟PLLCLK。(5)SW:72MHz的PLLCLK送入多路选择器SW,接入多路选择器SW的除了72MHz的PLLCLK外,还有HSE和HSI,共三路时钟信号。通过配置寄存器,可以选择SW输出为PLLCLK、HSE或HSI。SW输出就是STM32F103的系统时钟SYSCLK,通常选择PLLCLK作为SW输出。因此,STM32F103的系统时钟SYSCLK为72MHz。系统时钟SYSCLK的产生过程2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统(7)HCLK:高速总线AHB的时钟,由系统时钟SYSCLK经AHB预分频器后直接得到,通常,将入AHB预分频系数设置为1,HCLK即为72MHz。HCLK为CortexM3内核、存储器和DMA提供时钟信号。它是CortexM3内核的运行时钟,内核主频就是这个时钟信号,由此可见,通常情况下,STM32F103运行于最高频率72MHz。(9)PCLK1:外设时钟,由系统时钟SYSCLK经AHB预分频器,再经APB1预分频器后得到。通常情况下,将AHB的预分频系数设置为1,将APB1的预分频系数设置为2,PCLK1最大频率为36MH8。PCLK1为挂载在APB1总线上的外设提供时钟信号,如USART2,USART3,UART4,UART5,SPI2/I2S,SPI3/I2S,I2C1,I2C2,USB,RTC,CAN,DAC,PWR,BKP,IWDG,WWDG等。如需使用以上挂载在APB2总线上的外设,必须先开启APB2总线上该外设的时钟。(10)PCLK2:外设时钟,由系统时钟SYSCLK经AHB预分频器,再经APB2预分频器后得到,通常情况下,将AHB预分频系数和APB2的预分频系数都设置为1,PCLK2即为72MHz,它的最大频率也为72MHz。PCLK2为挂载在APB2总线上的外设提供时钟信号,如GPIOA,GPIOB,GPIOC,GPIOD,GPIOE,GPIOF,GPIOG,USART1,SPI1,TIM1,TIM8,EXTI,AFIO等,同样,如需使用以上挂载在APB2总线上的外设,则必须先开启APB2总线上该外设的时钟。AHB、APB1和APB2的产生2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统为什么STM32F103的时钟系统会显得如此复杂呢?因为有倍频、分频和一系列外设时钟的开关。首先,倍频是考虑到电磁兼容性,如果直接外接一个72MHz的晶振,过高的振荡频率会给制作电路板带来难度。其次,分频是因为STM32F103各个片上外设的工作频率不尽相同,既有高速外设又有低速外设,需要把高速外设和低速外设分开管理,如同PC中的北桥和南桥一样。最后,每个STM32F103外设都配备了时钟开关,当使用某个外设时,一定要先打开该外设的时钟。而当不使用某个外设时,可以把这个外设时钟关闭,从而降低STM32的整体功耗。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统STM32F103的时钟系统的设置:

上述这些时钟通过RCC(ResetandClockControl)复位与时钟控制模块进行配置和控制。RCC是STM32内部的一个重要外设,负责管理各种时钟源和时钟分频,以及为各个外设提供时钟使能。嵌入式系统开发人员可以通过RCC模块中的寄存器或者库函数来配置系统时钟和总线时钟,以满足不同外设对时钟频率的需求。复位与时钟控制模块的相关寄存器被映射到地址空间0x40021000-0x400213FF,有关寄存器功能及相关位定义的更详细信息请查阅芯片参考手册STM32F103xx

Referencemanual(RM0008)。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统文心大模型的回答2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—时钟系统文心大模型的回答目录第5章STM32F103微控制器第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调试与下载电路 2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—引脚定义STM32微控制器芯片的名称可以看出其引脚个数和封装形式,以STM32F103RCT6为例,其中RCT6中R代表引脚个数,T代表封装形式。引脚个数通常有T(36pin)、C(48pin)、R(64pin)、V(100pin),Z(144pin)和I(176pin)等。STM32F103RCT6芯片的引脚个数为64。

封装方式通常有T(LQFP,Low-profileQuadFlatPackage,薄型四侧引脚扁平封装)、H(BGA,BallGridArray,球栅阵列封装)、U(VFQFPN,VerythinFinepitchQuadFlatPackNo-leadpackage,超薄细间距四方扁平无铅封装)、Y(WLCSP,WaferLevelChipScalePackaging,晶圆片级芯片规模封装)等。STM32F103RCT6采用的是T(LQFP,Low-profileQuadFlatPackage)薄型四侧引脚扁平封装。图示为一个64引脚,采用薄型四角扁平封装(Low-profileQuadFlatPackage,LQFP)的STM32微控制器的引脚图,有关引脚的具体定义,请参考相关芯片的数据手册。STM32F103RCT6系列微控制器LQFP64封装的引脚图目录第5章STM32F103微控制器第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调试与下载电路 2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—启动配置

在STM32F10xxx系列微控制器中,通过BOOT[1:0]引脚可以设置三种不同的启动模式。BOOT0和BOOT1两个引脚的电平状态决定了微控制器在复位后的启动模式。有三种启动模式:1.主闪存存储器启动模式;系统存储器启动模式;内置SRAM启动模式。1.主闪存存储器启动模式(BOOT1=X,BOOT0=0)主闪存存储器是芯片内置的Flash,用户程序通常存放在其中。这是STM32F10xxx系列微控制器的正常工作模式。在大多数情况下,开发者会选择从主闪存存储器启动,因为这是一种可靠且常用的方式,适用于大多数应用场景。在系统复位后,SYSCLK的第四个上升沿,Boot引脚的值将被锁存。微控制器将主闪存存储器映射到启动空间(0x00000000),但主闪存存储器仍然可以在其原有的地址(0x08000000)上进行访问。系统启动后,CPU从地址0x00000000获取堆栈的地址,并从启动存储器的0x00000004指示的地址开始执行代码。2025/11/28第5章STM32F103微控制器--STM32F103微控制器组成—启动配置2.系统存储器启动模式(BOOT1=0,BOOT0=1)系统存储器是芯片内部一块特定的区域,出厂时预置了一段Bootloader程序(ISP程序)。这个区域是ROM区,出厂后无法擦写或修改。从系统存储器启动通常用于ISP(In-SystemProgramming,在系统编程)或IAP(In-ApplicationProgramming,在应用编程)等场景,这些场景需要在不拆卸微控制器的情况下,对Flash进行编程或更新。与从主闪存存储器启动类似,但系统存储器会被映射到启动空间(0x00000000)。在系统启动后,CPU从系统存储器的特定地址开始执行Bootloader程序,该程序用于对Flash进行编程或更新。3.内置SRAM启动模式(BOOT1=1,BOOT0=1)内置SRAM是微控制器的内存区域,其访问速度通常比Flash快。

从内置SRAM启动主要用于调试目的,因为它允许开发者在不需要等待Flash访问的情况下,快速运行和测试代码。在这种模式下,代码直接在SRAM中运行,因此需要在应用程序的初始化代码中,使用NVIC(NestedVectoredInterruptController,嵌套向量中断控制器)的异常表和偏移寄存器,将向量表重新映射到SRAM中。然后,CPU从SRAM的特定地址开始执行代码。目录第5章STM32F103微控制器第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调试与下载电路 2025/11/28第5章STM32F103微控制器--STM32F103微控制器最小系统左图所示为基于STM32F103ZET6(144引脚,512KFlash大容量芯片)的最小系统与其它微控制器相比,STM32F103内部包含了RC振荡器和复位电路,因此,基于STM32F103的最小系统可以做得更小,只需为其提供电源和下载调试接口即可。但通常为了精确和可靠,仍然在STM32F103外部配置了晶振和复位电路。以STM32F103ZET6微控制器为例,图5.14给出一个基于STM32F103微控制器的最小系统。根据不同型号控制器引脚的对应关系,该参考设计可以裁减到不同封装的任意一款STM32芯片。最小系统中除了STM32F103ZET6微控制器外,最小系统还包括电源电路、复位电路、时钟电路、调试与下载电路、启动模式选择等。2025/11/28第5章STM32F103微控制器--STM32F103微控制器最小系统—电源电路STM32F103微控制器要求2.0~3.6V的操作电压(VDD),并采用嵌入式的调压器提供内部1.8V的数字电源。当主电源VDD关闭时,实时时钟(RTC)和备用寄存器可以通过VBAT供电。供电系统由电源电路、滤波电容和其他辅助组件等构成。电源电路是STM32F103的供电系统核心部分,它负责将外部电源转换为微控制器所需的工作电压。在电源电路中,滤波电容用来平滑电源电压中的纹波和噪声,减少电压波动对微控制器工作的影响。除了电源电路和滤波电容外,供电系统还可能包括其他辅助组件,如保护电路、电源指示灯等。电源电路电路的具体设计请参阅相关的硬件设计手册。2025/11/28第5章STM32F103微控制器--STM32F103微控制器最小系统—时钟电路在STM32F103微控制器中,时钟电路是一个至关重要的部分,它负责为微控制器的各个部分提供精确和稳定的时钟信号。时钟电路的设计直接影响到微控制器的性能和功耗。对于STM32F103来说,尽管它内置了内部RC振荡器,可以为内部锁相环(PhaseLockedLoop,PLL)提供时钟,这样STM32F103依靠内部振荡器就可以在72MHz的满速状态下运行。但是,内部RC振荡器相比外部晶振来说不够准确也不够稳定,因此在条件允许的情况下,尽量使用外部主时钟源。外部主时钟源主要作为CortexM3内核和STM32外设的驱动时钟,一般称为高速外部时钟信号(HSE)。如图5.16所示,HSE外部系统时钟电路由外部晶振和负载电容组成。负载电容的值需根据选定的晶振进行调节,而且位置要尽可能近地靠近晶振的引脚,以减小输出失真和启动稳定时间。外部晶振的频率可以是4~16MHz,STM32F103通常选用8MHz的外部晶振。由于这种模式能产生非常精确且稳定的主时钟,因此它是STM32F103微控制器时钟电路的首选。采用外部晶振的STM32F103时钟电路2025/11/28第5章STM32F103微控制器--STM32F103微控制器最小系统—复位电路图5.17STM32F103复位电路1.NRST引脚上出现低电平(外部复位):当NRST管脚上的电平为低时,会触发系统复位。这通常是通过一个外部复位按键实现的。当按下这个按钮时,NRST引脚会与GND导通,即变为低电平,从而触发系统复位。而在不按按钮的时候,NRST引脚是通过一个上拉电阻保持高电平的。

2.看门狗计数终止复位:STM32F103中的看门狗分为独立看门狗(IWDG)和窗口看门狗(WWDG)。当看门狗计数终止时,会触发系统复位。其中,窗口看门狗对于喂狗时间的要求更高,只有在特定的时间窗口内喂狗才有效,否则会导致系统重启。

温馨提示

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

评论

0/150

提交评论