前期已经完成的事情:1、QT串口通信的编写,使用QT5自带的QtSerialPort类(串口类)。
2、stm32串口通信程序的编写,实现与串口助手的正常通信。
目前遇到的问题:1、用QT编写的上位机与stm32的通信存在问题,缓冲区不能清零,就发多少就会接到后面,不会每次都清空再填充。
2、但是串口助手没有这种问题,那就肯定是上位机的问题。开始一直在怀疑我自己写的程序,后来发现上位机并没有致命的错误。
分析问题:1、stm32串口接受中断判断的是\r\n(0x0d,0x0a),而QT上位机发出去的没有\r\n(我猜测是这个原因),然后将结束判断位变成(0x38,0x39),就实现了功能。
总结:总的来说是这样的,没有对串口中断接受有深刻的理解,对通信传输没有摸透。
通信传输的基本模式为:字符串(char)--->ASCII码----->二进制--->ASCII码--->字符串(char)
这是最基本的模式,所以关于数据帧的封装,帧头帧尾的定义就迎刃而解了。
最后再说一些关于stm32的串口通信的问题:初始化函数就不提了,几个寄存器的配置。
void USART1_IRQHandler(void)函数是串口1 的中断响应函数,当串口 </