FlyMCU
FlyMCU软件进行代码下载时建立在串口USART1的基础上进行的,所有需要提前把串口(需要串口转usb)这里必须使用USART1,因为我们芯片的串口下载只适配了USART1和电脑连接。
接下来在keil软件的工程选项内内点击OUTPUT,选择Create HEX file如下图。
打开FlyMcu先点击搜索串口,之后选择端口,bps选择默认的。
选择我们的HEX文件,在下载之下先得让程序进入BootLoader程序 :在硬件电路中先把BOOT0设为1如图所示把跳线帽移到右边。然后按一下复位,因为stm32只有刚复位时才能读取BOOT引脚。这样stm32就进入bootloader程序了,然后点击FlyMcu里的开始编程。
最后把BootLoader换回来,按一下复位。这个方法只是因为我们的硬件电路没有一键下载电路与串口配合所以比较麻烦,如果有这个电路就在软件下面选择好对应的触发方式DTR和Bootloader,可以直接点击开始编程了。
其实我们还可以在软件内勾选编程后执行(作用是软件自动从Bootloader跳转到0x08000000运行),然后取消下面的编程到FLASH时写选项字节如图。不过这样只能调试一次,再按一次复位程序有从Bootloader开始了。
点击读FLASH可以生成bin文件。
下载原理解释:之前我们学习过存储映像:
如图在ROM区的0X08000000位置的数据就是编译后的代码,stm32启动后就会自动运行这里的程序。如果想使用串口下载程序的话我们就得把数据通过串口发给stm32,stm32把数据转运到0x08000000的位置就好了,那么接受并转运数据就交给BootLoder(st公司写好的一段代码程序放在0x1FFFF0000区)了。接收并转运之后程序就进入了瘫痪状态,更新好之后,再启动主程序。那么如何启动BootLoder呢?如下图
当BOOT0为0时,就是主闪存,也就是再0x08000000的位置开始运行,再BOOT1为0BOOT0为1时,在系统存储器1FFFF000位置开始运行。下面写道BOOT引脚被锁存,也就是每次切换BOOT引脚后都要按一下复位。
STLINK Utility
电路只要把STLINK连接好就行了,串口可以不接,跳线帽可以都在最左边。
点击软件的这个按钮连接
这个按钮断开连接
点击这个编程按钮选择我们要下载的文件(这里支持bin和hex两种格式下载)
这个和keil内置的下载基本是一样的,我们使用的是keil内置的下载,直接在keil内点击下载就好了。