【QT调用ST-link-使用QT编写程序-调用ST-LINK_CLI.exe-烧写STM32F4xxx-基础样例】

【QT结合ST-link,使用QT编写程序,调用ST-LINK_CLI.exe,烧写STM32F4xxx-基础样例】

  • 1、前言
  • 2、实验环境
  • 3、先前了解-自我总结
  • 4、实验过程
    • (0)硬件连接与供电
    • (1)安装&使用STM32 ST-LINK Utility
    • (2)使用命令行工具 ST-LINK_CLI.exe
    • (3)新建QT工程
    • (4)代码结合
    • (5)实验结果
  • 5、实验代码
  • 6、具体细节
      • (1)如果使用软件时,提示找不到目标,
      • (2)SN可以算选择不加入
      • (3)文本框接受数据问题
      • (4)参数问题:
      • (5)报错:...St-LINK detected! ......
      • (6)显示超时问题:Timeout during flash ....
  • 7、总结

1、前言

最近在研究编写qt烧写STM32芯片,仿照STM32 ST-LINK Utility烧写工具,主要是是自己调试工具,不可能每次烧写固件,都需要调用STM32 ST-LINK Utility工具去烧,很麻烦的,另外给客户或者其他人使用,也不可能让他自己使用STM32 ST-LINK Utility烧写,所以做出一体的。

我开始也不知道怎么做,差了一些资料,目前如果使用qt的话,一般是都是使用qt调用st-link
相关工具,qt本身不具备烧写功能。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2
ST-Link命令行工具的版本号:STM32 ST-LINK CLI v3.6.0.0
硬件开发板:STM32F407ZET6(正点原子:探索者)
下载器:ST-link
在这里插入图片描述

3、先前了解-自我总结

(1)QProcess类的了解
目前看网上资料说,调用外部exe外部程序等,一般都需要这个类Qprocess。
这边有个简单简绍可以看下:https://blog.csdn.net/tianshi_1988/article/details/48273359
在这里插入图片描述

如果深入了解的话,可以直接看官网资料。
https://doc.qt.io/qt-6/qprocess.html
在这里插入图片描述

(2)下载工具ST-link的相关软件
一般下载的话,我们会可能会使用编译器内带的,如果有问题的话,才会考虑使用STM32 ST-LINK Utility或者STM32CubeProgrammer,然后弄个ST-link或者J-link硬件。
在这里插入图片描述
我们无论使用哪个工具,都需要保证软件是可用的,两个软件都可以去官网下载:
https://www.st.com/content/st_com/zh/search.html#q=STM32%20ST-LINK%20Utility-t=tools-page=1
在这里插入图片描述

(3)ST-LINK_CLI.exe与STM32_Programmer_CLI.exe
如上述图片,STM32 ST-LINK Utility工具装好后,会在对应文件目录下生成一个ST-LINK_CLI.exe文件,目录如下:
在这里插入图片描述
文件目录如下,一般默认的话就这个目录,这里也推荐默认的,后续编写qt程序要用。

//目录
C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility

在这里插入图片描述
而对应的STM32CubeProgrammer软件也有个:

C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin

在这里插入图片描述
当然本次重点是使用ST-LINK_CLI.exe,并且只是用基础命令,更深可以自己研究,本篇主要是使用qt调用,这个了解就好。

4、实验过程

(0)硬件连接与供电

本次使用正点原子开发板F407,我们需要知道下载口是那几个,需要连接有3个引脚,供电直接使用适配器。
这里可以去查正点原子原理图,或者你自己板子原理图,如果是STM32,大部分应该是这个。

SWCLK  ---    PA14
SWDIO  ---    PA13
GND    ---    GND

在这里插入图片描述

(1)安装&使用STM32 ST-LINK Utility

对于初学者,还是先要熟悉一下STM32 ST-LINK Utility这个软件的,就是一个下载工具。为此我们之间使用正点原子官方样例的固件。关于资料相关,可以去正点原子官网去查找,这里就不提供了,面面俱到太啰嗦了。
固件位置如下。
在这里插入图片描述
使用软件STM32 ST-LINK Utility进行下载:
在这里插入图片描述
如上我们课获得很多信息,比如芯片FLASH size,ST-link的SN,和芯片时F4的。烧写成功如下。
在这里插入图片描述

(2)使用命令行工具 ST-LINK_CLI.exe

如果上述你成功,那么一般而言,ST-link_CLI就是可以使用的,你可以理解上边软件工具,其实也是调用 ST-LINK_CLI.exe这个,只不过软件是写好图形界面。
使用CMD,找到命令提示符。
在这里插入图片描述
然后进入相应目录,就可以执行相应命令。

在这里插入图片描述
默认目录的好处就是,如果你安装都是默认,那么你的目录应该和我这里一样的。
然后执行命令就可以烧写了,如下。

ST-LINK_CLI.exe -c SN=0016002A4D46500F20383832 SWD  -P C:/Users/Admin/Desktop/jaa/atk_f407.hex 0x08000000 -Rst

请注意找了ST-link的SN,需要根据自己下载器改,还有放置的目录也是一样的。,就是你要烧写的文件所在目录。
我开始不会时,也犯了各种错误,尝试了很多指令,总是报各种各样的问题,检验多尝试吧。
关于错误的,这块我忘记截图了,直接截图了成功的。
在这里插入图片描述
到这一步,你就基本会简单使用这个工具了,对于qt来说你已经验证了工具exe可用性。

(3)新建QT工程

新建qt空的工程,这个网上已很多,自己也说过,命好名字,一路向下。
弄好后,我们拉入一个文本框和按键,顺带编辑一下名字,布个局,直接运行下。

在这里插入图片描述

(4)代码结合

然后加入代码,代码也非常简单,不过20行。
1、第一步,编写功能代码。
在这里插入图片描述

2、第二步,引入头文件和在头文件中声明函数。
在这里插入图片描述
在这里插入图片描述

3、第三步,按键转到槽,让案件触发,收到信息发到文本框。
在这里插入图片描述
在这里插入图片描述

这里还是有很多注意点,自己也在这里卡了很久,有很多问题,都是参数编写错误导致。

(5)实验结果

看着文章挺简单的,但是实际上确实遇到很多问题,尤其是参数这块。
在这里插入图片描述

如上,就是使用一个简单qt程序调用烧写。更多情况,请看“具体细节

5、实验代码

实验代码-样例demo:https://download.csdn.net/download/qq_22146161/88174078

6、具体细节

(1)如果使用软件时,提示找不到目标,

1、有可能没供电
2、有可能线序不对,或连接问题
在这里插入图片描述

(2)SN可以算选择不加入

实际测试,可以不写入SN,也是可以,就是st-link的SN参数可以不带。

(3)文本框接受数据问题

如下问题,其实是文本框接受数据问题,我发现,是加入代码46行开始报的。
在这里插入图片描述
如下更改就没有问题了。
在这里插入图片描述

(4)参数问题:

“unknow debug protocol or option” 这里其实参数"p"写错了,应该是"-p",一直摸不到头脑。
在这里插入图片描述
后来尝试在参数前后加入空格,发现报错“Unknown,command!Use -? for help”,只能说前车之鉴,后车之师吧。

(5)报错:…St-LINK detected! …

如此这样问题,是因为软件ST-LINK_Utility 开始,断开连接后者关掉软件就可以了。
在这里插入图片描述

(6)显示超时问题:Timeout during flash …

这块需要注意烧写文件的大小,已经匹配芯片flash大小,我讲一个很大的文件烧写时候,发现文件太大了,结果没烧成功,就会报错,所有烧写时候,要注意。
在这里插入图片描述

7、总结

记录,总结,成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/77207.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

合并果子C++详解

题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,…

AOF日志:宕机了,Redis如何避免数据丢失

当服务器宕机后,数据全部丢失:我们很容易想到的一个解决方案是从后端数据库恢复这些数据,但这种方式存在两个问题:一是,需要频繁访问数据库,会给数据库带来巨大的压力;二是,这些数据…

【云原生】K8S超详细概述

目录 一、Kubernets概述1.1 K8S什么1.2为什么要用K8S 二、Kubernetes 集群架构与组件2.1Master组件Kube-apiserverKube-controller-managerKube-scheduler 2.2 配置存储中心etcd 2.3 Node 组件KubeletKube-Proxydocker 或 rocket 三、 Kubernetes 核心概念3.1Pod3.2Pod 控制器K…

React Dva项目 Model中编写与调用异步函数

上文 React Dva项目中模仿网络请求数据方法 中,我们用项目方法模拟了后端请求的数据 那么 今天我们就在models中尝试去使用一下这种异步获取数据的方法 之前 我们在文章 React Dva项目创建Model,并演示数据管理与函数调用 中已经接触过Model了 也可以理解为 它就是 …

STM32入门学习之定时器中断

1.STM32的通用定时器是可编程预分频驱动的16位自动装载计数器。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波 形 ( 输出比较和 PWM) 等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形 周…

C# Blazor 学习笔记(7):组件嵌套开发

文章目录 前言相关资料组件嵌套组件模板RenderFragment 意义传统前端样式组件化css 前言 我们在组件化一共有三个目的。 不用写CSS不用写html不用写交互逻辑 简单来说就是Java常说的约定大于配置。我们只需要必须的参数即可,其它的都按照默认配置。我们不需要关系…

穷举深搜暴搜回溯剪枝(3)

一)字母大小写全排列 784. 字母大小写全排列 - 力扣(LeetCode) 1)从每一个字符开始进行枚举,如果枚举的是一个数字字符,直接忽视 如果是字母的话,进行选择是变还是不变 2)当进行遍历到叶子结点的时候,直接将…

网络安全进阶学习第十一课——MySQL手工注入(2)

文章目录 一、UA注入1、原理2、靶场演示:1)一旦页面出现如下现状,就可以使用UA注入2)BP抓包3)修改User-Agent 二、referer注入1、原理2、靶场演示:1)使用BP抓包2)修改Referer 三、DN…

0基础学习VR全景平台篇 第76篇:全景相机-圆周率全景相机如何直播推流

圆周率科技,成立于2012年,是中国最早投身嵌入式全景算法研发的团队之一,亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era和Pilot One,为用户带来实时畅享8K的高清…

【编程】典型题目:寻找数组第K大数(四种方法对比)

【编程】典型题目:寻找数组第K大数(四种方法对比) 文章目录 【编程】典型题目:寻找数组第K大数(四种方法对比)1. 题目2. 题解2.1 方法一:全局排序(粗暴)2.2 方法二&#…

恺英网络宣布:与华为鸿蒙系统展开合作,将开发多款手游

8月5日消息,恺英网络宣布旗下子公司盛和网络参加了华为开发者大会(HDC.Together)游戏服务论坛,并在华为鸿蒙生态游戏先锋合作启动仪式上进行了亮相。恺英网络表示,将逐步在HarmonyOS上开发多款游戏,利用Har…

Excel修改日期格式,改变日期的筛选方式

我们有两列日期数据: 左边这一列筛选会显示: 右边这一列筛选会显示: 修改格式,将【日期1】改为【日期2】 将【日期1】的格式修改为文本格式即可 修改格式,将【日期2】改为【日期1】 选中日期2,点击【数据…

Spring源码之XML文件中Bean标签的解析1

读取XML文件,创建对象 xml文件里包含Bean的信息,为了避免多次IO,需要一次性读取xml文件中所有bean信息,加入到Spring工厂。 读取配置文件 new ClassPathResource("applicationContext.xml")ClassPathResource是Sprin…

Android 仿京东头部滚动头像动态变化

UI出了一个新需求,仿京东头部滚动,头像需要动态变化,先来看下京东的是什么效果 我们知道什么效果以后,接下来就想想怎么实现吧,Android常规吸顶折叠布局是由CoordinatorLayoutAppBarLayoutCollapsingToolbarLayout组成…

express学习笔记5 - 自定义路由异常处理中间件

修改router/index.js,添加异常处理中间件 *** 自定义路由异常处理中间件* 注意两点:* 第一,方法的参数不能减少* 第二,方法的必须放在路由最后*/ router.use((err, req, res, next) > {console.log(err);const msg (err &…

SpringCloud入门Day01-服务注册与发现、服务通信、负载均衡与算法

SpringCloudNetflix入门 一、应用架构的演变 伴随互联网的发展,使用互联网的人群越来越多,软件应用的体量越来越大和复杂。而传统单体应用 可能不足以支撑大数据量以及发哦并发场景应用的框架也随之进行演变从最开始的单体应用架构到分布式&#xff08…

Python零基础入门(十一)——异常处理

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不…

远程访问本地mysql

文章目录 一、设置本地mysql允许外部访问找到mysql配置文件my.ini &#xff0c;linux环境是my.cnf配置mysql配置文件 二、创建外部访问的mysql用户三、配置mysql用户的权限四、配置防火墙端口五、连接查看本地ip地址 参考 连接命令 mysql -h <host> -P <port> -u &…

深度学习之双线性插值

1、单线性插值 单线性插值是一种用于估计两个已知数据点之间未知点的方法。它基于线性关系&#xff0c;通过计算目标位置的值&#xff0c;使用已知点之间的线性函数进行插值。这在图像处理中常用于放缩、旋转等操作&#xff0c;计算简单&#xff0c;产生平滑结果&#xff0c;但…

将python源代码打包成.exe可执行文件

步骤 1、安装pyinstaller2、打开终端或命令提示符窗口并进入解释器的虚拟环境3、从解释器的虚拟环境进入包含要打包Python文件的目录4、通过以下命令打包5、打包后文件存放位置 1、安装pyinstaller pip install pyinstaller2、打开终端或命令提示符窗口并进入解释器的虚拟环境…