【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)数据帧长度问题
本次实验中,使用的数据其实非常短,但是实际应用中,数据可能非常长,并且非常快,实际需要调试的,可能会需要开定时器什么,那些暂时不在本文讨论范围之内。
总结
感觉最简单的,也需要一步一步调试出来。