目的 | BOOT0 | BOOT1 | ||
想用用串口下载代码 | 1 | 0 | ||
想一按复位键就开始跑代码 | 0 | x |
战舰专门设计了一键下载电路,通过串口的 DTR 和 RTS 信号,来自动配置 BOOT0 和 RST 信号,因此不需要用户来手动切换他们的状态,直接串 口下载软件自动控制,可以非常方便的下载代码
一键下载电路:只需要在 flymcu 软件设置:DTR 的低电平复位,RTS 高电平进 BootLoader。就可以一键下载代码了,而不需要手动设置 B0 和 按复位了。其中,RESET 是开发板的复位信号,BOOT0 则是启动模式的 B0 信号。
一键下载电路的具体实现过程:首先,mcuisp 控制 DTR 输出低电平,则 DTR_N 输出高, 然后 RTS 置高,则 RTS_N 输出低,这样 Q3 导通了,BOOT0 被拉高,即实现设置 BOOT0 为 1,同时 Q2 也会导通,STM32F1 的复位脚被拉低,实现复位。然后,延时 100ms 后,mcuisp 控制 DTR为高电平,则DTR_N输出低电平,RTS维持高电平,则RTS_N继续为低电平,此时STM32F1 的复位引脚,由于 Q2 不再导通,变为高电平,STM32F1 结束复位,但是 BOOT0 还是维持为 1,从而进入 ISP 模式,接着 mcuisp 就可以开始连接 STM32F1,下载代码了,从而实现一键下 载。
自带了一键下载电路,所以我们并不需要去关心 BOOT0 和 BOOT1 的状态,但是为了让下下载完后可以按复位执行程序,我们建议大家把 BOOT1 和 BOOT0 都设置为 0
简单说明一下一键下载电路的原理,我们知道,STM32 串口下载的标准方法是两个步 骤: 1, 把 B0 接 V3.3(保持 B1 接 GND)。 2, 按一下复位按键。 通过这两个步骤,我们就可以通过串口下载代码了,下载完成之后,如果没有设置从 0X08000000 开始运行,则代码不会立即运行,此时,你还需要把 B0 接回 GND,然后再按一 次复位,才会开始运行你刚刚下载的代码。所以整个过程,你得跳动 2 次跳线帽,还得按 2 次 复位,比较繁琐。而我们的一键下载电路,则利用串口的 DTR 和 RTS 信号,分别控制 STM32 的复位和 B0,配合上位机软件(flymcu,即 mcuisp 的最新版本),设置:DTR 的低电平复位, RTS 高电平进 BootLoader,这样,B0 和 STM32 的复位,完全可以由下载软件自动控制,从而 实现一键下载。