第一种系统存储器:最常用的一种就是系统存储器启动,STM32芯片出厂的时候系统内部存储器自带bootloader程序,负责下载程序的时候对芯片内部的flash进行擦除与编写,ISP下载就是通过串口与bootloader将程序烧写到flash中(科普:MCU的代码是存储在flash当中的,所以一般芯片说有多少k的flash就代表能存储多少代码,据我估计六万行代码占用空间是300k,所以作为学习者的我们来说完全不必要考虑存储空间不够的问题。)一般初学者用到的就是这种。
第二种SRAM启动:SRAM叫做静态随机存取存储器(RAM、ROM、SRAM、FLASH、EEPROM等存储器都是个啥,都有啥子区别建议读者自行百度)SRAM启动一般是编写一些小程序用来扫描所有的I/O口,然后再板上测量信号,借此检测所有的焊接是否正常。
这样不必触动Flash中的程序。有一个案例是说买了个板子用ISP下不了程序,发现flash锁了,就使用SRAM启动将flash解锁。
第三种flash启动:就是不用出厂自带的bootloader,直接运行flash里的程序,将flash分为两部分,第一部分充当第二部分的bootloader,第一部分干嘛的呢?第一部分用来接收bin文件并将其写到第二部分中,第二部分才是我们MCU真正要运行的代码。
引脚后面加 # 号表示低电平有效
DTR#、RTS#初始状态的时都是高电平,在启用下载的时候,DTR#维持高,RTS#拉低,此时两个三极管Q2和Q3导通,那么BOOT0为高电平,RESET为低电平复位,然后DTR#变低, Q2不导通,复位结束,此时BOOT0为高电平。stm32的启动模式变为从系统存储器启动,启用串口Q下载,STM32和MCUISP下载软件进行通信,进行代码下载,等到代码下载结束时RTS#先变为高电平,然后DTR#在变成高电平