STM32烧录程序方式

一、启动模式(Boot modes)

阅读:STM32中文参考手册_V10.pdf 查看启动配置(Boot modes)。

在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存 = 芯片内置的Flash。
2)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区
域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。
3)SRAM = 芯片内置的RAM区,就是内存啦。
 
         在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:
BOOT1=x   BOOT0=0   从用户闪存启动,这是正常的工作模式。
BOOT1=0   BOOT0=1   从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1   BOOT0=1   从内置SRAM启动,这种模式可以用于调试。

        在系统复位后, SYSCLK的第4个上升沿, BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

        在从待机模式退出时, BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后, CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。

       因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。 Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。 STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。

        根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问:
● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000 或 0x0800 0000。
● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。(可用于串口下载)

● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

注意: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,从新映射向量表之SRAM中。

 

1, ST-LINK烧写
1.1 ST-LINK烧写的SWD模式
ST-LINK烧写的SWD模式 是ST-LINK烧写的一种方式,只需要4根接线。 分别为VCC,GND,SWCLK, SWDIO;

         如果用SWD模式下载的话,只需要接:J-LINK的第1脚(VDD)、第7脚(TMS/SWDIO对应stm32的PA13)、第9脚(TCK/SWCLK对应stm32的PA14)、第4.6.8.10.12.14.16.18.20中的任意一个脚(GND地脚)、需要说明的是第15脚(RESET对应stm32的NRST)可接可不接,大家根据实际自己决定(保险起见还是建议接上,不接时可以在MDK仿真器的设置里面不使用硬件复位,而是用system reset或者vect reset)!

用SWD下载参考电路图:

1.2 ST-LINK烧写的JTAG模式

 

在JTAG模式下的程序烧写过程中需要进行单独对板子进行供电

STM32F10XXX JTAG的引脚:

STM32F10XXX 芯片内部的JTAG引脚已带有内部上拉和下拉:

JTAG下载参考电路图:

2 ,USB转串口连接线烧写(又称ISP烧写,且使用的串口必须是串口1)
2.1 方法一(该方法用于手动设置下载)
Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader;
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中;
Step3:程序下载完成后,必须要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动。

 

2.2 方法二(该方法用于软件一键下载)
 

        我们想用串口下载代码,就要配置BOOT0为1,BOOT1为0,但是如果想让STM32一复位就运行代码,就要配置BOOT0为0,BOOT1配置为什么都可以,为了解决这个问题,我们可以设计一个电路,通过串口转USB芯片CH340G的DTR#和RTS#引脚的信号来控制一键下载电路,从而间接控制STM32的RESET和BOOT0引脚的信号,来达到通过串口一键下载和运行的效果。

一键下载电路参考:

串口下载软件选用的是FlyMcu或MCUISP,通过串口的DTR和RTS信号来自动配置BOOT0和RESET信号,不需要用户手动切换它们的状态,直接串口软件自动控制,可以方便的下载代码。

我们需要注意一点:CH340G上电后DTR#和RTS#都为高电平,在用MCUISP烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”,CH340G IC在实际操作时引脚的变化为“DTR#拉高,RTS#拉低”,即软件设置和实际情况是取非的,相反的。

        首先,FlyMcu软件控制DTR输出低电平,则DTR#引脚输出高, 然后RTS置高,则RTS#引脚输出低,这样Q3导通了,BOOT0被拉高,即实现设置BOOT0为1,同时Q2也会导通,STM32的复位脚被拉低,实现复位。

        然后,延时100ms后,FlyMcu软件控制DTR为高电平,则DTR#引脚输出低电平,RTS维持高电平,则RTS#引脚继续为低电平,此时STM32的复位引脚,由于Q2不再导通,变为高电平,STM32结束复位,但是BOOT0还是维持为1,从而进入ISP模式,接着mcuisp就可以开始连接STM32,下载代码了,从而实现一键下载。​

DTR#和RTS#信号的时序图如下图所示:​ 
 
        程序下载完毕后,如果设置了编程后执行,STM32会再次被复位,此时DTR#引脚为高,RTS#引脚为低,STM32复位后,DTR#引脚设置为低,RTS#引脚设置为高,那么Q2和Q3都不导通,此时,STM32重新开始启动后,检测到BOOT0为0,程序开始正常运行,一键下载至此就完成了。
 

 

 

 

 

  • 14
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stm32烧录程序exe是一种用于将程序加载到stm32微控制器中的可执行文件。stm32是一种基于ARM内核的微控制器系列,广泛应用于嵌入式系统开发中。 为了将程序烧录stm32微控制器中,需要按照以下步骤进行操作: 1. 准备开发环境:首先,我们需要下载安装适用于stm32的开发工具,例如Keil MDK、IAR Embedded Workbench等。这些工具提供了一系列开发所需的库函数和工具,方便程序的开发和烧录。 2. 编写程序:接下来,我们需要编写程序代码。使用C/C++语言编写程序代码,实现所需的功能。在编写过程中,需要考虑到stm32微控制器的特性和硬件资源限制。 3. 编译和链接:完成程序编写后,需要使用开发工具进行编译和链接操作。编译可以将程序代码转换成stm32可执行的机器码,链接则将所需的库函数和其他依赖项链接到生成的可执行文件中。 4. 配置烧录工具:在烧录之前,需要将烧录工具与stm32微控制器进行连接。通常,我们会使用一些通用烧录工具,如ST-Link、J-Link等。这些工具通过USB接口将计算机与stm32微控制器连接起来。 5. 烧录程序:一切准备就绪后,我们可以将生成的可执行文件烧录stm32微控制器中。通过烧录工具的软件界面,选择对应的文件,然后进行烧录操作。烧录过程需要一定时间,一旦烧录完成,我们就可以开始测试和调试程序了。 总结来说,stm32烧录程序exe是指用于将程序加载到stm32微控制器中的可执行文件。通过准备开发环境、编写程序、编译和链接、配置烧录工具和进行烧录操作等步骤,我们可以成功将程序烧录stm32微控制器中,并使其正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值