针对STM32系列单片机,大家一般采用STLink和Jlink来下载程序,这里我们试一下CH340 USB转串口芯片的下载方法,主要是将Boot电平设置好。
采用:STM32F103C6T6芯片microUSB 接口连上电脑,com3端口
环境:Win10,提前安装好CH340/341系列的驱动
针对BOOT0和BOOT1的不同接线方式(高电平,低电平,不接线),开发板的下载情况分析如下图:(“x”代表不接线,“√”代表能成功下载)
Boot接线方式
首先对BOOT0与BOOT1如何连接及连接方式介绍一下。
STM32 单片机的BOOT0 和BOOT1 应用原理
STM32 三种启动模式对应的存储介质均是芯片内置的,它们是:
1)主闪存存储器= 芯片内置的Flash。这也是正常工作模式
2)SRAM = 芯片内置的RAM 区,就是内存啦。
3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说
的ISP 程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。
在每个STM32 的芯片上都有两个管脚BOOT0 和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复
一般不使用内置SRAM 启动(BOOT1=1 BOOT0=1),因为SRAM 掉电后数据就丢失。
一般BOOT0 和BOOT1 跳线都跳到0(地)。只是在ISP 下载的情况下,BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0 的跳线接回0,也即BOOT0=0,BOOT1=0 ,也可以不用更改
我们在这里采用CH340串口烧写下载程序,BOOT0和BOOT1分别设置为1和0,下载后可直接运行,但复位后代码不执行,可以在调试过程中,不用频繁更改boot电平
注意:如果JTAG 相关的引脚被用作普通IO,将无法下载(BOOT0 为低电平的情况下)。解决办法是用串口下载一次程序后再用JLINK 下载,或者将BOOT0 配置成高电平后下载。
Keil5中代码STM32单片机C语言代码如下:
Keil5代码情况
编译好后,在FlyMcu软件进行下载:
将Boot电平设置好,
选好要下载的.hex文件,设置为STMISP
DTR的低电平复位,RTS高电平进BootLoader
点击开始编程,结果如下图:
FlyMcu软件下载界面
耗时1.5s左右,写入1kb,下载完后,可看到STM 32 单片机开始执行程序,小灯开始闪烁(5mm黄色发光二极管,插在面包板上,正极(白色公专转母杜邦线)接A0引脚,负极接GND引脚(黑色公专转母杜邦线),其间串联一个220Ω的色环电阻)
效果如下图:
LED闪烁