第2章 STM32最小系统一、STM32最小系统电路构成
- 晶振电路、复位电路、电源电路、下载电路
- STM32光靠一个芯片是无法工作的,必须依靠外围电路搭配,把外围的基础电路统称为最小系统电路
二、晶振电路

- 提供给单片机工作所需要的时钟
- 对于STM32这样的高级单片机来说,它内部本身就自带了高速时钟源和低速时钟源,一般不推荐使用内部时钟源(内部时钟源精度较差)
- 在单片机的引脚外接一些晶振,晶振通常选择8MHz的晶振,适合STM32内部其他外设时钟的计算,在23和24引脚中连接一个晶振
- 如果将晶振直接接到23和24这两个引脚,会出现系统工作不稳定,因为晶振在起振的一瞬间会产生一些电感,为了消除这些电感会在晶振的两端分别接入一个电容(一般是无极性电容),电容选取大小通常取决于晶振的选取大小,在这个电路中,通常使用10-33PF的无极性电容,在这里使用的22PF的电容
- 保证晶振电路的工作稳定,STM32才有稳定的前提
- 原理图中标号一样,代表是连接在一起的(如:两个OCS_IN标号,说明这两个是要连 接在一起)
- RTC时钟(需要后备电池):32.768K的外部时钟源
三、复位电路

- 晶振犹如人的心脏,需要无时无刻的给单片机提供一个运行周期,即使时钟周期在不停的运行,系统也可能会出现崩溃、瘫痪的状态
- 单片机通过复位来实现系统的重启
- NRST是复位引脚,低电平有效(给这个引脚提供一个低电平,STM32会进行一个复位的状态)
- 复位方式:RESET按键、重新上电
- 看左图,RST按键按下,会变成低电平,NRST是低电平有效,会进行复位
四、电源电路

- STM32工作电压范围:1.8 - 3.3V,通常使用直流3.3V
- DC_IN:火牛接口,插入电源(5V电源)
- 系统工作是需要3.3V的,所以需要一个稳压芯片AMS1117-3.3,将5V转成3.3V

- USB_SLAVE是USB从机接口,USB本身就有一个电源管脚(VBUS)
- 右侧电路,使用USB转串口的电路(串口通信)进行供电(一般用的最多),使用的也是USB口,他也有电源管脚(VBUS)
- USB和串口进行转换,通过一个芯片(CH340)
五、下载电路
USB2作用:程序下载、电源提供和串口通信

- 程序要烧到单片机当中,需要通过一个上位机软件来将程序文件烧录到芯片,现在的笔记本没有RS232的接口,那么就需要一个芯片将USB和串口进行一个转换,这里我们使用的就是CH340C芯片(内部已经集成了晶振),有的使用的是CH340G,则需要一个外部晶振,CH340C在设计布线布局的时候非常方便
- 上位机软件实现自动下载,通过CH340的RTS和DTR控制BOOT0和复位(看STM32的启动模式)
JTAG接口

- JTAG接口的作用
- STM32的串口下载、程序下载
- STM32的仿真调试
- JTAG占用5个管脚,SWD占用两个管脚
六、STM32的启动模式

- STM32的启动方式有3种
- X是任意电平,0或1
- 如果想要给芯片进行串口下载程序,那么要进入系统存储器模式
- 下载完程序,通过按下复位让程序自动运行,它会进入到主闪存存储器(Flash),也就是说我们的代码是下载到Flash当中的,即要让它从Flash中启动,那么就要进入到主闪存存储器模式
- 开发板上的BOOT端子,端子是用来切换BOOT0和BOOT1的电平,默认24连接,13连接
- 如果要重新下载代码,那么就要进入到系统存储器模式,这就要看下载电路了

- RTS管脚需要我们配合上位机软件,上位机软件完成RTS和DTR自动控制的
- 要进行下载,即BOOT0为1,BOOT1为0,下载软件会自动控制RTS为低电平,RTS电路导通,连接到3.3V,BOOT0就为1,就会控制程序进行下载
- 下载完成之后,要让它自动运行,上位机软件又会给管脚发一个高电平,三极管就会截止,BOOT0自动变成0
- 下载的时候还会操作一个复位,因为先要进行复位,才能进行下载,通过DTR管脚操作复位,上位机软件会自动控制这个管脚
- 在开始下载之前,设置DTR信号为低电平以触发硬件复位;复位完成后,DTR信号恢复为高电平,从而允许下载和运行新程序。
- 内置SRAM模式用来调试我们的代码,程序在SRAM当中运行速度比Flash中运行的更快,调试代码的时候使用该模式,使用该模式时,将BOOT0和BOOT1都置1,同时还需要在keil里进行设置。
- SRAM模式很少使用,因为在程序调试的时候,Flash的速度已经足够了