复位电路:相当于重新启动
复位条件:
低电平需要保持在0.8V以下才可复位。
复位参考电路:
分两种场景:1.单片机上电复位(依靠于这个电容) 2.按键复位。
如果去掉电容:上电的瞬间 nRST引脚直接变成3.3V 没有低于0.8V, 但加上电容,刚上电,nRST引脚的电压为电容两端的电压(会逐渐从0升高到3.3V)。电容电压不能跳变的原理,所以就复位成功了。
复位方式:
1.系统复位
独立看门狗(IWDG):没在指定时间 喂狗 就会复位 喂狗的狗粮其实是个计数器
12位(4095)递减计数器0xfff, 当计数器减到0的时候就会复位(比较暴力 到0直接复位)
窗口看门狗(WWDG):避免 程序在中断中有时候会浪费一些时间被独立看门狗复位。
7位的递减计数器 0x7F-0x40。36MHz的一个频率 主时钟停止之后窗口看门狗就会失效。
2.电源复位
就是触发 复位引脚复位
3.后备区域复位
备份区数据不会因为系统复位、电源复位而丢失
BOOT启动引导电路:选择启动引导区
BOOT简介
STM32在启动时会在系统时钟的第4个上升沿锁定,并根据 BOOT0和BOOT1选择从哪块存储区开始启动。
STM32有三块区域可以用来存储系统代码:.
1内置闪存模块中的 主存储模块 (最主要的启动方式)
2.闪存模块中的系统存储区域模块,
系统存储区域中 存放着出厂自带的BOOTLOADER的程序,用户可以通过BOOTLOADER的引导将程序烧录至 比如主存储器中 比如ISP烧录方式
3.内置的SRAM,但SRAM具有掉电丢失的特性(所以用得比较少)
BOOT外围电路:(简单的开发板 复杂的开发板则用ISP一键下载)
这个方式不是选择下载到哪里的,而是选择下载方式,我们的用户默认是下载到内部flash里面,系统存储器存储着bootloader下载程序,我们需要从这里启动,下载完程序到flash里面再从flash启动
在使用JTAG或SWD模式烧写程序时,一般情况下不需要考虑BOOT0和BOOT1引脚的状态。这是因为JTAG和SWD模式是通过调试接口(如JTAG或SWD接口)与目标芯片进行通信,而不是通过引导引脚来选择引导模式。
当使用JTAG或SWD模式进行烧写程序时,只需要确保芯片的引脚连接正确、芯片供电正常,并且选择正确的调试工具和烧写软件即可。BOOT0和BOOT1引脚的状态通常在芯片上电后会自动配置为适合调试和烧写的状态,不需要手动干预。
但是,在一些特殊情况下,可能需要手动操作BOOT0引脚来选择引导模式(如系统引导区还是Flash区),这通常是在特殊的烧写场景下才需要考虑。
下载程序时BOOT0和BOOT1的电平为:
- BOOT0: 高电平(3.3V)
- BOOT1: 低电平
而在运行程序时,BOOT0和BOOT1的电平为:
- BOOT0: 低电平(0V)
- BOOT1: 随意
这种电平配置是为了在下载程序时将芯片引导到特定的模式,以便进行程序下载和更新。当BOOT0为高电平时,芯片会进入系统引导模式,从而可以通过串口或者其他下载方式更新程序。而在运行程序时,将BOOT0设置为低电平可以让芯片从Flash中启动用户程序,而BOOT1保持高电平则是为了保持芯片的正常工作状态。
下载调试电路
什么是下载调试电路:
将代码程序,通过一定的设计电路,加载到单片机指定存储区域(下载到内置主闪存中),使其能够精准控制和执行。
就是 1.下载(下载到内置主闪存中)已编译的程序文件至单片机。2.调试单片机中正在运行的程序。
支持的调试方式:JTAG/SWD/串口下载模式
JTAG和SWD都可以支持下载烧录程序和在线硬件调试程序。
JTAG下载模式:因为JTAG是一个标准的协议 所以JTAG烧录不仅仅是针对STM32 在很多单片机上都支持JTAG下载模式的。需要除了电源和地之外 JTCLK(时钟信号)、JTDI(数据输入)、JTDO(数据输出)、JTRST(复位)、JIMS(模式选择)。5个引脚
SWD:(串行线调试):ARM公司专门为了 使用ARM芯片的设备 而设计的一种协议 用于微控制器进行编程和调试 只需要SWDIO和SWCLK两个引脚。
串口下载模式:只支持烧录程序 对应:BOOT启动电路时从系统存储器BOOTLOAD的启动烧录的方法。
下载调试工具:STLINK(意法半导体官方下载工具)、JLINK(ARM平台通用的调试工具)、USB下载器(部分开发板试用)
ISP下载电路:在系统可编程下载(在STM32表现为串口一键下载电路)
简介:
串口下载连接示意图
1.只有USART1才具有串口下载功能
使用串口ISP时,首先,板子需要具备一个USB转串口模块而且USB转串口模块一定要连接串口一 。
上位机是232标准 和 TTL是反的 所以写的是低电平复位,高电平进BOOTLoader,实际上在STM32F103中是高电平复位,低电平进BOOTLoader。
利用上位机 mcuisp程序 将程序的HEX文件下载进单片机 程序的自动运行也是靠上位机控制的(上位机有个按钮编程后执行)。
如果没有DTR低电平复位 RTS高电平进Bootloader 则需要手动更改BOOT引脚(所以这是一键ISP)
DTR和RTS是CH340芯片的。
ISP原理
这个方式不是选择下载到哪里的,而是选择下载方式,我们的用户默认是下载到内部flash里面,系统存储器存储着bootloader下载程序,我们需要从这里启动,下载完程序到flash里面再从flash启动
目的主要是控制 BOOT0的引脚
BOOT0 =0时 内部Flash 启动模式
BOOT0 =1 时 为系统存储器启动(ISP模式在系统存储器中) 所以要使用ISP模式就必须要
如果BOOT0要=1则 Q1要导通,Q1是PNP三极管所以RTS输出低电平
如果要产生复位的话 U18芯片的Y、Z引脚是互通的 NRST默认是拉高的 ,如果想拉低复位的话Q2要导通(DTR为高电平1), 因为RTS为低电平一导通 Z点(NRST)的电平为0,复位后会检测BOOT引脚 此时BOOT0为1,BOOT1为0 进入系统存储器启动模式(里面有ISP模式)直接把程序下载到芯片。确定好启动方式之后,程序就会直接运行了。
第4点 ISP下载完后, 自动的(通过上位机 会重新检测BOOT0和BOOT1引脚)还原成原来的状态(BOOT0=0),进入FLASH进行程序的执行。启动之前会重新辨认一下BOOT引脚,判断是否是进入内部Flash。
普通ISP和一键ISP的区别
普通ISP:需要复位两次 一次下载 一次执行
![](https://i-blog.csdnimg.cn/blog_migrate/9df93a9d33441a9e05f91ca0ae79612a.png)
一键下载: