
STM32有两种常用的烧录方式,一是利用JLink和STLink调试下载,二是利用串口线直接下载 6 x9 \ N' h5 ]0 P! C1 v# V& z: O 一、ISP(In-System Programming)7 A0 y1 L/ L" H1 `( H 在系统编程,使用引导程序(Bootloader)加上外围UART/SPI等接口进行烧录。! u% z' G+ h" u. M- I9 L0 Y: m7 s ; W6 {& ^( h- ~2 Z 二、ICP (In-circuit programmer)) W& b# j+ i I$ F / i. T2 }6 M7 }; D) ]* H( j0 s 在电路编程,使用SWD/JTAG接口。 % c6 \# L* v7 n( Z 这两种方式有什么区别以及怎么用我们得先了解一下STM32的地址映射 7 _' g% U! x* U ![]() 看Block0中有两块标为橙色的,Flash和System memory . [& G7 k4 x" M- Q ` Main memory 主存储区、存放代码的地方 4 h4 N. W4 V3 G System memory系统存储区、System memory是STM32在出厂时内置Bootloader的地方! r' ^ K! a: U6 @5 n2 a! d4 Y STM32的启动方式7 b. I& e" G& A" Y+ H- ~4 G STM32有两个BOOT引脚,通过配置不同的高低电平,可以让单片机从不同的地址开始运行。 BOOT0=0, BOOT1任意(JLink和STLink调试下载:ICP)& ~' {- U6 B! n: [" g 通常我们是在Main memory 主存储区(0x0800 0000)运行程序,BOOT0引脚拉低即可。 这种情况,KEIL软件给STM32烧录程序,就是直接在这个地址烧录,烧录完,直接在这个地址处运行。 BOOT0=1,BOOT1=0(串口直接下载:ISP) 这种情况就用在使用串口方式给STM32烧录程序,这时单片机从系统存储器(0x1FFF 0000)启动,运行的是出厂预置的BootLoader程序,可以接收串口发来的程序,并将其写入Main memory(0x0800 0000),程序烧录完成后,再将BOOT0引脚拉低,Main memory(0x0800 0000)处运行刚烧录的代码了。& L( ^; F( e# e# s ( h. R' J! z% E BOOT0=1,BOOT1=1 这种情况是从内存中启动,内置SRAM(也就是STM32的内存中),既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。$ `0 h. f' {5 [) A; o; C ![]() + e+ y; j* l n, }, _ ————————————————/ Y; e% }, H7 W$ E 版权声明:在邯郸睡大觉6 x) Q: L; Y. L* @ |
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南
ST 微控制器电磁兼容性 (EMC) 设计指南