STM32标准库串口下载和STLINK使用指南

STM32的串口下载:

打开FlyMcu,接线就像之前那样接,USART1串口通信,必须是1,其他的不支持串口通信。

编译之后就会生成HEX文件,而且上面的按钮Select也可以选择生成的位置

搜索串口,选择,然后波特率选择115200. 

在联机下载程序文件哪里选择HEX文件,在点击开始编程之前,还需要把跳线帽改一下,进入BooeLoader程序,不然就会一直卡在那里。切换引脚之后,要点击一下复位键,因为STM32在刚复位的时候才会读取BOOT引脚,程序运行之后,BOOT引脚是无效的。STM32执行的程序就是,不断接收USART1的数据,然后刷新到主闪存,在接收到数据之后,这时候STM32还处于BOOTLoader的刷机程序中,这时候就要把跳线帽换回来,复位,就会执行程序了。

串口下载的原理:

 

 0x08000000存储的是c语言编译后的程序代码,只要把程序写入这个位置,STM32执行的就是这个代码。把什么程序写入这个位置,STM32就执行什么程序。串口发送的话,就把数据通过串口发送到单片机,刷新到这个位置就就可以了。

但是接收并转存数据,这个操作本身就是一个程序,也就是要用程序实现自我更新。就像机器人给自己换电池一样,但是这是不可能的,所以就要在大机器人之外制造一个小机器人,专门用来换电池,对于这个程序来说,就是BootLoader。它是ST公司写好的一段代码,存储位置是ROM区的最后,1FFF F000,也叫自举存储器,用途是程序的自我更新,用于串口下载,程序不断刷新,BootLoader接收USART1的数据,刷新到程序存储器。这时候主程序处于瘫痪状态,更新完了之后,才会执行新程序。

如何启动大机器人小机器人,可以通过这个BOOT配置。

主闪存:启动大机器人

系统存储器:启动小机器人

因为这个图下面这句话,所以在重新配置之后,需要进行一次复位

每次换跳帽太麻烦解决方法:

 

想要更新程序,就必须有一个切换小机器人的过程,BOOT0引脚以及RST复位引脚的必须有高低电平的变化,可以设置设置两条线,自动帮我设置两个这两个引脚的电平。 上图右边四个引脚本来是流控的,但是这里不用流控,可以把它当做普通IO口,RTS跟DTR是输出引脚,可以用这两个引脚控制BOOT0引脚以及RST复位引脚,但是要有相应的硬件配件,搜索:STM32一键下载电路。

但是这款最小系统的芯片中没有,所以不能使用它,在小软件下面的选择那几种模式就没什么用了。还是得用跳线帽。

有一个缓招,就是勾选编程后执行,取消勾选编程到flash时写选项字节,这样在开始编程之后就会自动执行程序,但是在执行之后按复位键,这里又没用了,是一次性的,这个就相当于把数据刷新之后,虽然跳线帽还是处于BootLoader中,也就是SRAM存储器中,但是相当于手动执行了一条跳转指令,执行了FLASH程序,但是复位一下,就相当于重新刷新了BOOT配置,程序没反应了。

读FLASH,就是把芯片中的程序读取出来,.bin是没有地址信息的原始数据文件,.hex是有地址的,使用串口下载的时候,一定要选择.hex文件。

读器件信息,以及清除芯片,

选项字节区:

 

 这里可以进行相关配置,第一个STM32F1:

 读保护,就是可以防止程序被偷走,设置成读保护的时候,回到keil下载就会失败,这时候需要回到这里重新设置成非读保护,在取消读保护的时候,芯片内容会被清空,防止被偷。

选项的数据不会根据程序变化而变化,他一直都在,还有一个好处就是可以用上位机很方便的修改,比如FlyMcu活着STLINK Utility。

写保护可以用Flash的每几页单独进行写保护,写保护如果是把前面的几页写保护了,下一次下载肯定出错,因为选项配置的参数只能在Flash刷新时顺便刷新,写保护了,没办法把程序写入单片机了,也就没办法解开写保护了,进入一个死循环,这点需要注意。

从左到右,打开文件,可选.bin格式的,就是用FlyMcu导出的那种文件,第二个就是存储,第三就是连接,第四就是断开连接,第五就是擦除。

选项配置:Target到Opion bytes,这个读保护以及写保护是立马对芯片生效的,不像上一个软件,需要Flash下载程序才可以。

 

ST-LINK,再选第一个,可以给固件库更新,这时候需要给STLINK重新拔出,然后重新插一下。

 

物联沃分享整理
物联沃-IOTWORD物联网 » STM32标准库串口下载和STLINK使用指南

发表评论