写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!
本文写于:2025.04.09
STM32开发板学习——第30节: [9-6] FlyMcu串口下载&STLINK Utility
- 前言
- 开发板说明
- 引用
- 解答和科普
- 一、FlyMcu串口下载
- 二、STLINK Utility
- 问题
- 总结
前言
本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!
开发板说明
本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
原理图如下
1、开发板原理图
2、STM32F103C6和51对比
3、STM32F103C6核心板
视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。
下图是实物图
引用
【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
数据手册
解答和科普
一、FlyMcu串口下载
我们芯片的串口下载只适配了USART1;
配置BOOT0引脚的跳线帽,拔下来;然后插在右边的两个针脚,配置BOOT0为1;然后按一下复位键,因为STM32只有在刚复位的时候读取BOOT引脚; 那这样芯片就进入BOOTLoder程序了,程序就是不断接收USART1引脚的数据,刷新到主闪存;
这样这个LED闪烁程序就通过BootLoder成功刷新到主闪存里了;
回到STM32,目前STM32还没有亮起来,这是因为STM32还在执行BootLoader的刷机程序;我们还需要把BootLoder模式切换回来,把BOOT0置0;
然后看到LED闪烁
第一个问题:BOOT引脚干啥的,为什么这么配置;BootLoader又是干啥的,串口下载的原理是什么?
在ROM区的0x0800位置,存储的就是编译后的程序代码,你把什么样的程序写到这个位置,STM32就执行什么样的程序;如果想要使用串口下载程序的话,我们只需把程序数据通过串口发给STM32,STM32接收数据,然后刷新到0800这一块位置就行了,但是接收并转存数据,这个过程本身也是程序,如何利用程序实现自我更新,这时一个问题。同样STM32实现程序自我更新就需要一个小机器人,这个小机器人就是BootLoader,是ST公司写好的一段代码,这段程序的存储位置,就是ROM区的最后,1FFF F000;这段区域叫做系统存储器,存储的就是BootLoader,或者叫自举程序,用途程序自我更新,串口下载,在自我更新中,BootLoder接收USART1数据,刷新到程序存储器,这时候主程序就处于瘫痪状态,更新好之后,再启动主程序,执行新程序,这就是串口下载的流程。刷机模式
01:从1FFF F000开始运行,启动小机器人;
所以说每次切换BOOT引脚之后,都要按一下复位;
第二个问题:每次下载程序都要拔插两边跳线帽,太麻烦了有没有什么解决办法;
想要程序自我更新,必须有一个切换小机器人的过程,BOOT0引脚和REST复位引脚必须得有高低电平变化,那能不能接两条线,当电脑下载时,自动帮我设置一下BOOT0和RES的电平呢,可以的。
其中RTS和DTR是输出引脚,我们可以用这两个引脚来控制BOOT0和RST,当然外部还需要设计一个控制电路,一般可以用两个三极管开关来进行控制,STM32一键下载电路。
只需要最开始和最后执行一次跳线帽;
生成BIN格式的文件:记录的就是STM32从0800开始存储的程序数据, bin格式是没有地址信息的原始数据文件,之前生成的HEX文件是有地址信息的,FLY下载的时候只能选择HEX文件,
选项字节:也是ROM区最后一小块存储单元,用途是存储一些独立于程序代码的配置参数,
第一块,就是读保护,刚才说了,为了保护程序的安全,选项字节就有一个参数可以配置读保护,可以看到,设成A5允许读出,设成FF阻止读出,你设置阻止读出,再回到Keil下载程序就会失败,另外在取消读保护时,会清空芯片的程序,这样程序就不会被偷走了,这就是读保护。
第一, 选项字节的数据相当于是世外桃源了,无论程序如何更新,选项字节的数据都可以不变,可以存储不随程序变化而变化的参数,另外还有一个好处,就是可以用上位机很方便地修改,在上位机可以直接修改;
写保护:可以把最后几页保护锁起来,设置写保护之后,就没法再写了,如果想再次写入的话,解除写保护就行了,设置写保护,再下载,如果需要写入保护区的话,就会出错:比如你把最前面几页写保护了,下载一次之后再下载肯定就会出错,而这个软件设计,不能单独写入选项字节,只能下载Flash,顺便写入选项字节,但写保护,下载不了,下载不了,就不能解除写保护,形成死循环了,这个注意一下;
二、STLINK Utility
完成之后LED闪烁,完成下载。
如果你有芯片被读保护或者写保护锁住了,就可以到这个地方来,解除保护;
STlink固件更新。
问题
总结
本节课主要了串口的软件,如何用串口下载程序,BOOT的设置和如何实现程序的自我更新,如何配置。