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

news/2024/12/29 18:27:06/

【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.ppmy.cn/news/1009109.html

相关文章

【HTML】label 标签

在HTML中&#xff0c;<label> 标签用于为表单元素创建标签文本或标题。它可以与输入字段&#xff08;如文本框、单选按钮、复选框等&#xff09;和其他表单元素关联起来&#xff0c;以提高可用性和可访问性。 <label> 元素有两种常见的用法&#xff1a; 包裹方式…

笙默考试管理系统-MyExamTest--classranking(1)

笙默考试管理系统-MyExamTest 目录 笙默考试管理系统-MyExamTest 一、 笙默考试管理系统-MyExamTest--classranking 二、 笙默考试管理系统-MyExamTest--classranking 三、 笙默考试管理系统-MyExamTest--classranking 四、 笙默考试管理系统-MyExamTest--classrankin…

ConcurrentHashmap1.7和1.8的差别

技术主题 jdk1.7版本的ConcurrentHashmap基于分段锁实现的,jdk1.8版本中的进行是那个鸡 技术原理 分段锁介绍 分段锁(Segment-Based Locking)是一种并发编程中用于提高性能的策略,特别适用于需要高并发访问的数据结构,如哈希表。它的基本思想是将一个大的数据结构分成…

电力巡检无人机助力迎峰度夏,保障夏季电力供应

夏季是电力需求量较高的时期&#xff0c;随着高温天气的来临&#xff0c;风扇、空调和冰箱等电器的使用量也大大增加&#xff0c;从而迎来夏季用电高峰期&#xff0c;电网用电负荷不断攀升。为了保障夏季电网供电稳定&#xff0c;供电公司会加强对电力设施设备的巡检&#xff0…

Unity学习参考文档和开发工具

☺ unity的官网文档&#xff1a;脚本 - Unity 手册 ■ 学习方式&#xff1a; 首先了解unity相关概述&#xff0c;快速认识unity编辑器&#xff0c;然后抓住重点的学&#xff1a;游戏对象、组件|C#脚本、预制体、UI ☺ 学习过程你会发现&#xff0c;其实Unity中主要是用c#进行开…

docker容器抓包

使用nsenter切换网络命名空间 #获取PID docker inspect --format "{{.State.Pid}}" container_id/name # 切换网络空间 nsenter -n -t PID切换后可用 ip addr 查看网络结构(nsenter切换网络空间不是永久的&#xff0c;只对当前会话有效&#xff0c;不用担心切换会对…

【深度学习环境】安装anaconda、tensorflow、pycharm

目录 1.安装anaconda 2.安装tensorflow-gpu 3.安装pycharm 4.VNC操作 5.安装Pytorch PS: linux下常见的操作&#xff1a; 1.Linux下强制关闭程序&#xff1a; 2.导出环境 2.1.pip导出 2.2.conda导出 2.3.其他 3.windows下的环境安装 & pycharm远程配置 4.bash…

3.3 Makefile的嵌套包含

一、Makefile包含子Makefile的示例 下面是一个示例Makefile和sub.mk的内容。 首先是sub.mk文件的内容: VAR := Hello from sub.mksay_hello:@echo $(VAR)然后是Makefile文件的内容: include sub.mkall: say_hellosay_hello:@echo "Hello from Makefile"在这个例…