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

【QT 自研上位机 与 STM32F103下位机联调>>>通信测试-基础样例-联合文章】

【QT 自研上位机 与 STM32F103下位机联调>>>通信测试-基础样例-联合文章】

  • 1、概述
  • 2、实验环境
  • 3、联合文章
    • (1)对于上位机,可以参照如下例子
    • (2)对于下位机,可以参照如下例子
  • 4、QT上位机部分
    • 第一步:QT代码下载编译。
    • 第二步:QT代码验证。
  • 5、STM32下位机部分
    • 第一步:STM32代码验证。
    • 第二步:更改下载器与串口转换器。
    • 下载后,使用串口助手-验证结果
  • 6、联合调试
  • 细节部分
        • (1)验证STM32代码部分时,一直无法通信>>>DMA与堵塞,不要混用。
        • (2)设置波特率问题。
        • (3)数据帧长度问题
  • 总结

1、概述

刚开始接收这样的需求的时候,其实一脸懵逼,因为既要调试qt上位机,又要调试stm32下位机,如何把配合,又不是太了解。这个时候,建议分解任务,上位机做一部分任务,下位机做一部分任务,之前有做个STM32F103使用串口解析任务的,又有QT串口通信的,那么完全可以联合调试。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
QT软件版本:qt 5.14.2
在这里插入图片描述

硬件环境:野火-指南者STM32F103VET6
其它硬件配件:j-link,串口转换器,PC
说明:上下位机链接桥梁,依靠串口转换器
如图下图,本次硬件。
在这里插入图片描述

3、联合文章

(1)对于上位机,可以参照如下例子

样例文章:【QT 5 调试软件+串口相关初试串口+基础样例】

直接将代qt码链接放在这里:https://download.csdn.net/download/qq_22146161/86722251

(2)对于下位机,可以参照如下例子

样例文章:【软件STM32cubeIDE下F103配置uart3+DMA收发+简单数据解析-基础样例】

直接将代码链接放在这里: https://download.csdn.net/download/qq_22146161/86394451

4、QT上位机部分

虽然之前就做个QT相关实验,但是我们无论拿到的是他人的代码,还是自己的代码,最好都验证一下,保证代码本身没有问题,否则联调时,不通,怀疑来怀疑去的,最后自己的一个点没注意到,损失的是自己。

第一步:QT代码下载编译。

将代码下载下来后,更改波特率为9600,直接运行。
如下图所示
在这里插入图片描述

第二步:QT代码验证。

准备转换器,将RT与TX短接。
在这里插入图片描述
点击软件发送消息。

在这里插入图片描述
由此,QT软件部分就验证完毕了。

5、STM32下位机部分

虽然之前就做个STM32相关实验,但是我们无论拿到的是他人的代码,还是自己的代码,最好都验证一下,保证代码本身没有问题,否则联调时,不通,怀疑来怀疑去的,最后自己的一个点没注意到,损失的是自己。

第一步:STM32代码验证。

将代码下载下来,后点击编译,更改循环部分代码,使用堵塞方式传输。
在这里插入图片描述

第二步:更改下载器与串口转换器。

(1)我本次使用的j-link,没有使用ST-link,需要设置下。
在这里插入图片描述
(2)更加转换器型号不同,接的方式可能不同,但是接在STM32引脚如下。

PB10 --- USART3_TX---
PB11 --- USART3_RX---
GND  --- GND ----//共地细节 别忘了

下载后,使用串口助手-验证结果

使用串口助手发送“123”,十六进制就是 31 32 33,可以看到,回复 4 5 6 .
在这里插入图片描述

6、联合调试

完成以上测试,那么就可以联调了。其实整个硬件通路已经搭建好了,在测试STM32代码时,完事了,只需要关闭“串口助手”,运行QT程序就可以了。如下图。
在这里插入图片描述

细节部分

(1)验证STM32代码部分时,一直无法通信>>>DMA与堵塞,不要混用。

这其实有点尴尬了,话说自己写的,感觉应该没有问题,后来没办法,只能取野火官方下载样例跑,才证明板子没有问题,后来才发现,DMA传输与阻塞混用导致,这点还是需要注意下的,另一方面,如果我开始全部搭建好联调,那真不知道,到底是哪里出现问题了。
以下为使用开发样例效果,证明了板子硬件没有问题。
在这里插入图片描述

(2)设置波特率问题。

本文只是一个简单样例,是一个入门,在调试上,你觉得改QT简单,就改qt代码波特率以及配置,或者改32代码。

(3)数据帧长度问题

本次实验中,使用的数据其实非常短,但是实际应用中,数据可能非常长,并且非常快,实际需要调试的,可能会需要开定时器什么,那些暂时不在本文讨论范围之内。

总结

感觉最简单的,也需要一步一步调试出来。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c语言的三种基本结构——初学者一定要了解哦
  • 无人驾驶:高精地图与定位
  • 【论文笔记】提高超高分辨率图像的语义分割准确性的两种方法:MagNet(CVPR2021)与FCtL(ICCV2021)
  • OGG21C微服务的安装和配置
  • Matlab之多平台雷达检测融合仿真(附源码)
  • 2022年计网《宿舍网有线无线一体化项目》总结
  • 渗透测试基础- - -windows网络安全常用dos命令
  • 【Python】近似熵,样本熵,模糊熵计算高效版
  • Java获取自增主键ID值
  • 【算法入门图论】【模板】拓扑排序|【模板】单源最短路2 |最小生成树
  • 第31讲:MySQL事务的并发问题以及事务的隔离级别
  • JavaScript 2 JavaScript 简介
  • 【目标检测】YOLOv5在Android上的部署
  • 攻防世界WEB练习 | easyphp
  • Java数据结构:栈与综合计算器的实现(图解+完整代码)
  • CSS魔法堂:Absolute Positioning就这个样
  • Debian下无root权限使用Python访问Oracle
  • DOM的那些事
  • IDEA常用插件整理
  • Js基础——数据类型之Null和Undefined
  • Js基础知识(一) - 变量
  • Laravel5.4 Queues队列学习
  • learning koa2.x
  • PHP的类修饰符与访问修饰符
  • Python学习笔记 字符串拼接
  • React-生命周期杂记
  • socket.io+express实现聊天室的思考(三)
  • Spark学习笔记之相关记录
  • windows下如何用phpstorm同步测试服务器
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 深入浅出Node.js
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 云大使推广中的常见热门问题
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​iOS安全加固方法及实现
  • ​插件化DPI在商用WIFI中的价值
  • # include “ “ 和 # include < >两者的区别
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Linux(Source Insight安装及工程建立)
  • $ git push -u origin master 推送到远程库出错
  • (C#)获取字符编码的类
  • (LLM) 很笨
  • (二)WCF的Binding模型
  • (二十四)Flask之flask-session组件
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容