
本文主要讲述STM32启动模式中System memory的内容,以及围绕的相关内容。 ! u' e# w* k2 u7 K. O! H( L1写在前面 STM32中内嵌了一段自举程序,可能很多人不知道。
那段自举程序存放在System memory(系统存储器)中,我们通过配置启动,选择启动系统存储器就可以运行这段程序。 STM32有三种启动模式:
三种模式是通过不同配置来实现,一般通过BOOT引脚和BOOT位来配置启动模式。
不同的芯片配置有差异,有些芯片没有BOOT1引脚,会结合BOOT位来实现。 9 ? G1 C5 ^) N- J F1启动配置: ![]() F0启动配置: ![]() 复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。复位后,用户可以通过设置BOOT1 和 BOOT0 引脚来选择需要的启动模式。 STM32内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用户不能修改。 ! Q% a" }7 C" w2 n 我们选择System memory(系统存储器)启动模式,就会进入系统存储区执行自举程序。 d3 g: Q3 u4 Z p, ` 内嵌的自举程序主要用于通过串行接口重新编程 Flash。, {% Y8 `% b! s! o+ u0 y8 O 有哪些串行接口呢? UART、 I2C、 SPI、 CAN、 USB等。 F103只支持的UART: ![]() F4支持多种串行接口: ![]() 不同型号MCU支持的串行接口不一样,具体请参看应用笔记 AN2606。 * i1 U/ \0 | C- x- J/ ~ 4自举程序中 USART 协议通信就会牵涉到协议,这里也说一下自举程序中 USART 协议。 1 H, v6 W2 Y* w: V1 R$ i/ e8 w/ D4 P 1.协议序列: V' S" q; t7 I. }5 X ![]() 当配置 STM32 微控制器为自举启动,系统将进入自举程序模式。 8 b( A) ]8 I7 S. Q) q* X+ C$ L 2.USART 自举程序命令集 ![]() 3.命令流程( d; V0 Q6 l9 @( {/ T: W 有命令就有相应命令执行流程,这里拿Get 命令流程为例: ![]() 其他命令流程这里就不一一讲述,请参看官方文档AN3155。 自举程序主要是针对STM32进行编程,说白了,自举程序上位机就是FLASH编程工具。 自举程序上位机工具大家都比较熟悉,这里简单说一下。 * s' Q. C* [$ h" Y+ ?3 h 1.STMFlashLoader 这个工具是相对叫老的工具,好像现在没有维护更新了。 ![]() ![]() 主要就是使用UART对STM32FLASH读写擦除等操作。 2.STM32CubeProgrammer 这个工具在2月底更新到了V2.0.0,新增OTA功能。 ![]() 写到这里,相信大家都更加明白这个工具的用途了吧? # U g$ H# p+ b' M) e |