当前位置: 首页 > article >正文

STM32单片机入门学习——第30节: [9-6] FlyMcu串口下载STLINK Utility

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!

本文写于: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的设置和如何实现程序的自我更新,如何配置。

相关文章:

STM32单片机入门学习——第30节: [9-6] FlyMcu串口下载STLINK Utility

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.09 STM32开发板学习——第30节: [9-6] FlyMcu串口下载&STLINK Utility 前言开发…...

Qt容器类在元对象系统中使用

解释 “QVector没有被注册到Qt的元对象系统中”这句话的意思是&#xff1a;QVector<double>这种数据类型没有被Qt的元对象系统&#xff08;Meta-Object System&#xff09;识别和管理。Qt的元对象系统是Qt框架的核心部分&#xff0c;它提供了信号与槽机制、动态属性系统…...

亮相CMEF,美的医疗全维度打造智慧医疗新生态

当下&#xff0c;医疗科技革命的浪潮正汹涌而来&#xff0c;AI技术在中国医疗器械领域迅猛发展&#xff0c;释放出巨大的潜力。 4月8日&#xff0c;在第91届中国国际医疗器械博览会&#xff08;CMEF&#xff09;上&#xff0c;2025美的医疗年度新品发布暨中国脊梁守护计划启动…...

数据库视图讲解(view)

一、为什么需要视图 二、视图的讲解 三、总结 一、为什么需要视图 视图一方面可以帮我们使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。 比如&#xff0c;针对一个公司的销售人员&#xff0c;我们只想给他看部分数据&#xff0c…...

TQTT_KU5P开发板教程---文件的烧写与程序固化

文档功能介绍 本文档所描述的为文件的烧写固化&#xff0c;利用spi芯片将程序固化带芯片上&#xff0c;可以让开发板在重新上电时也可以跑程序。我们所使用的芯片型号为mt25qu256-spi-x1_x2_x4.本次实验采用的在led_shift项目的基础上将流水灯程序固化到flash芯片上&#xff0c…...

进度管理__制订进度计划_资源平衡和资源平滑

本文讲解的资源平衡与资源平滑&#xff0c;是制订进度计划的工具与技术的第3项&#xff1a; 资源优化。 1. 资源平衡 资源平衡是为了在资源需求与资源供给之间取得平等&#xff0c; 根据资源制约因素对开始日期和完成日期进行调整的一种技术。 如果共享资源或关键资源只在特定…...

【ISP】ISP pipeline(AI)

ISP Pipeline 全流程概览 ISP&#xff08;Image Signal Processing&#xff0c;图像信号处理&#xff09;流程通常从原始 Bayer 数据出发&#xff0c;经过一系列模块处理&#xff0c;逐步完成图像校正和增强&#xff0c;最终生成用于显示或编码的标准图像。常见处理模块包括&a…...

C++ RAII 的用途及业务代码实现案例

C RAII 的用途及业务代码实现案例 RAII 的核心概念 RAII (Resource Acquisition Is Initialization&#xff0c;资源获取即初始化) 是 C 的核心编程范式&#xff0c;其核心思想是&#xff1a; 资源获取与对象构造绑定资源释放与对象析构绑定利用 C 对象生命周期自动管理资源…...

RVOS-2.基于NS16550a ,为os添加终端交互功能。

2.1 实验目的 为os添加uart功能&#xff0c;通过串口实现开发板与PC交互。 2.1 硬件信息 QEMU虚拟SoC含有 虚拟NS16550A设备 。 不同的地址线组合&#xff08;A2、A1、A0&#xff09;对应的读写模式和寄存器如下所示&#xff1a; 2.2 NS16550a 的初始化 线路控制寄存器&#…...

#SVA语法滴水穿石# (004)关于 ended 和 triggered 用法

在 SystemVerilog 断言(SVA, SystemVerilog Assertions)中,ended 是一个用于 序列(sequence) 的关键字,它表示某个序列(sequence)在特定时间点已经成功匹配(即“结束”)。 ended 主要用于 同步不同序列的时间关系,尤其是在多序列组合或属性(property)中需要对齐时…...

软件学报 区块链论文 截止2025年4月 录用汇总 附pdf下载

截止 2025年4月 软件学报 2024年 区块链论文 录用汇总 附pdf下载 1 Title: 基于多父链辅助工作量证明共识机制的后量子区块链系统 Authors: Key words: 区块链;后量子密码;共识机制;辅助工作量证明 Abstract: 随着量子计算机的发展,对于以传统椭圆曲线数字签名为基石的公…...

损失函数篇——针对YOLO-MIFIN模型

1. 总损失函数&#xff08;公式9&#xff09; L all λ conf L conf λ cls L cls λ loc L loc (9) L_{\text{all}} \lambda_{\text{conf}} L_{\text{conf}} \lambda_{\text{cls}} L_{\text{cls}} \lambda_{\text{loc}} L_{\text{loc}} \tag{9} Lall​λconf​Lconf​λ…...

【MySQL 数据库】增删查改操作CRUD(上)

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. CRUD 简介 2. Create -- 新增 2.1 语法 2.2 练习 3. Retrieve -- 检索 3.1 Select -- 查询 3.1.1 全列查询 3.1.2 指定列查询 3.1.3 表达式查询 3.…...

pycharm 有智能提示,但是没法自动导包,也就是alt+enter无效果

找到file->settings->editor->inspections 把python勾选上&#xff0c;原来不能用是因为只勾选了一部分。...

web前端: 什么是web?

web前端指的是利用HTML、CSS、JavaScript等各种web技术&#xff0c;做出能在浏览器上运行且用户可见的界面&#xff0c;比如网站网页、APP软件界面、游戏前端界面等。web前端主要包括web全局架构、web视觉表现和web交互效果这三部分。 WEB发展史 Web&#xff08;World Wide We…...

Java 开发中主流安全框架的详细对比,涵盖 认证、授权、加密、安全策略 等核心功能,帮助开发者根据需求选择合适的方案

以下是 Java 开发中主流安全框架的详细对比&#xff0c;涵盖 认证、授权、加密、安全策略 等核心功能&#xff0c;帮助开发者根据需求选择合适的方案&#xff1a; 1. 主流安全框架对比表 框架名称类型核心功能适用场景优点缺点官网/文档Spring Security企业级安全框架认证、授…...

Linux网络编程——TCP协议格式、可靠性分析

目录 一、前言 二、TCP协议格式 三、TCP的可靠性 TCP协议的确认应答机制 总结 四、TCP协议的缓冲区及流量控制 五、 TCP流量控制 六、TCP报文类型 标记位 一、前言 在上一篇文章中&#xff0c;我们重点介绍了UDP协议格式的一些内容。在本文中介绍的便是TCP协议格式的…...

【深度学习】Downstream Model:预训练模型的下游应用与微调技术

Downstream Model&#xff1a;预训练模型的下游应用与微调技术 文章目录 Downstream Model&#xff1a;预训练模型的下游应用与微调技术1 什么是Downstream Model&#xff08;下游模型&#xff09;2 预训练模型与下游任务的关系3 微调技术与迁移学习微调的必要性高效迁移学习参…...

C# ref out关键字 理解学习记录

ref 在传参是可以以指针的方式传递&#xff0c;而不是传参数的值 举例&#xff0c;函数返回void ,局部变量要传参后得到结果&#xff1a; ref传参前要实例化赋值&#xff0c;而函数体内不一定要赋值 out 传参前不一定要赋值&#xff0c;而函数体内一定要赋值 &#xff0c;与r…...

网络建设与运维神州数码DCN VRF虚拟路由转发 路由表隔离

作用&#xff1a; 通过在一台路由器或者三层交换机上创建多张路由表实现数据的隔离&#xff0c;常用与MPLS VPN、防火墙.... 如果发送的包在同一VRF中&#xff0c;则查表&#xff0c;查找到匹配的路由条目后&#xff0c;将指示的端口转发给下一跳 如果不在同一VRF中则丢弃。…...

Python中的AdaBoost分类器:集成方法与模型构建

引言 在机器学习领域&#xff0c;集成方法&#xff08;Ensemble Methods&#xff09;是一种通过结合多个基学习器来提高模型性能的技术。AdaBoost&#xff08;Adaptive Boosting&#xff09;是集成方法中的一种经典算法&#xff0c;它通过迭代训练多个弱分类器&#xff0c;并将…...

11:00开始面试,11:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

大模型本地部署系列(1) Ollama的安装与配置

一. Ollama简介 Ollama 是一个 本地化的大模型运行工具&#xff0c;可以让你在自己的电脑&#xff08;比如Mac、Windows、Linux&#xff09;上直接下载和运行各种开源的大型语言模型&#xff08;比如 LLaMA 3、Mistral、Gemma 等&#xff09;&#xff0c;而无需依赖互联网或云…...

宝塔面板数据库管理页面打不开,提示405 Not Allowed

宝塔面板数据库的管理按钮打开&#xff0c;提示405 Not Allowed 一般是php版本不匹配。 PHPMyAdmin 4.x PHP 5.2&#xff1a;安装 phpMyAdmin 4.1 PHP 5.3/5.4&#xff1a;安装 phpMyAdmin 4.4 PHP 5.5&#xff1a;安装 phpMyAdmin 4.4 PHP 5.6&#xff1a;安装 phpMyAdmin 4…...

文件上传漏洞原理学习

什么是文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的脚本文件&#xff0c;并通过此脚本文件获得了执行服务器端命令的能力。“文件上传” 本身没有问题&#xff0c;有问题的是文件上传后&#xff0c;服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全&#…...

数字的乘阶运算

求数字的乘阶&#xff1a; 例如&#xff1a;6的乘阶运算&#xff1a;6*5*4*3*2*1 例如&#xff1a;3的乘阶运算&#xff1a;3*2*1 class Program{static void Main(string[] args){Console.WriteLine("请输入数字&#xff1a;");int num_01 Convert.ToInt32 (Con…...

OpenCV——图像融合

OpenCV——图像融合 一、引言1.1 图像融合分类 二、C代码实现三、效果展示3.1 标准球3.2 铝制底座 一、引言 在许多计算机视觉应用中(例如机器人运动和医学成像)&#xff0c;需要将来自多幅图像的相关信息集成到一幅图像中。这种图像融合将提供更高的可靠性、准确性和数据质量…...

基于 Spring Boot 瑞吉外卖系统开发(四)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;四&#xff09; 新增分类 新增分类UI界面&#xff0c;两个按钮分别对应两个UI界面 两个页面所需的接口都一样&#xff0c;请求参数type值不一样&#xff0c;type1为菜品分类&#xff0c;type2为套餐分类。 请求方法都为POST。…...

C语言for循环嵌套if相关题目

一、题目引入 以下代码程序运行结果是多少? 二、思路解析 进入一个for循环 a<100 进入第一个if b1不大于20为假 进入第二个if b4 a这时a自增为2 当b4时,满足第二个if条件 1.b4,a2 当b7时,满足第二个if条件 2.bb37,a3 当b10时,满足第二个if条件 …...

springAOP终极总结

开头先大致说一下bean的生命周期 创建 Bean 实例 → 填充属性 → 初始化前&#xff1a; → 所有 postProcessBeforeInitialization(bean, name) 执行 init 方法&#xff08;比如 PostConstruct&#xff09; → 所有 postProcessAfterInitialization(bean, name) OK&#xff…...