打印
[其他ST产品]

STM32——USART

[复制链接]
楼主: 键盘手没手
手机看帖
扫描二维码
随时随地手机跟帖
61
键盘手没手|  楼主 | 2024-1-31 13:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
定义一个状态量用于判断状态,定义一个数据指示接收到哪一个了

使用特权

评论回复
62
键盘手没手|  楼主 | 2024-1-31 13:17 | 只看该作者
状态机逻辑:根据分析得到几种状态:等待包头,接收数据,等到包尾

各个状态在什么样的情况下转变:等待包头在接收到包头后转移至接收数据,接收数据接收够数据后转移至等待包尾,等待包尾,收到包尾后,切换至等待包头模式;

首先静态变量初始值为0,是一个状态—等待包头,判断接收的数据是不是包头,如果是包头0xFF,切换至下一个状态为1,是第二个状态接收数据,判断接收的数据是否够4个,如果接收够4个,切换为下一个状态2,是第三个状态等待包尾,判断是否接收到包尾,如果接收到状态切换为0,第一个状态;

使用特权

评论回复
63
键盘手没手|  楼主 | 2024-1-31 13:18 | 只看该作者

使用特权

评论回复
64
键盘手没手|  楼主 | 2024-1-31 13:18 | 只看该作者
应用层:

使用特权

评论回复
65
键盘手没手|  楼主 | 2024-1-31 13:18 | 只看该作者
5.4API4串口发送字节数据包 (随机包长)

在串口发送和接收数据API1和API2基础上建立;

使用特权

评论回复
66
键盘手没手|  楼主 | 2024-1-31 13:19 | 只看该作者
逻辑结构:

根据分析得到几种状态:等待包头,接收数据,等到包尾

各个状态在什么样的情况下转变:等待包头在接收到包头后转移至接收数据,接收数据接收够数据后转移至等待包尾,等待包尾,收到包尾后,切换至等待包头模式;

首先静态变量初始值为0,是一个状态—等待包头,判断接收的数据是不是包头或者是不是第一次接收数据,如果是包头0xFF,切换至下一个状态为1,是第二个状态接收数据,判断接收的数据是否够4个,如果接收够4个,切换为下一个状态2,是第三个状态等待包尾,判断是否接收到包尾,如果接收到状态切换为0,第一个状态;

使用特权

评论回复
67
键盘手没手|  楼主 | 2024-1-31 13:19 | 只看该作者

使用特权

评论回复
68
键盘手没手|  楼主 | 2024-1-31 13:19 | 只看该作者

使用特权

评论回复
69
键盘手没手|  楼主 | 2024-1-31 13:20 | 只看该作者
送相应的数据,来操作LED;

通过Strcmp(par1,par2)(判断字符串1和2是否相等,相等为1,不相等为0),套用IF循环,如果相等,执行点亮LED并向串口回传一个数据LED点亮,并用OLED显示,否则反之;

使用特权

评论回复
70
键盘手没手|  楼主 | 2024-1-31 13:20 | 只看该作者
如果连续发送数据包,程序处理不及时,可能会导致数据包错位 ,文本数据包,每个数据包是独立的,如果错位了问题就比较大了,所以在每次程序处理完成后,在接收下一个程序包;

使用特权

评论回复
71
键盘手没手|  楼主 | 2024-1-31 13:20 | 只看该作者
在主循环里执行完程序后清0标志位;

使用特权

评论回复
72
键盘手没手|  楼主 | 2024-1-31 13:20 | 只看该作者
判断等待包头的时候在加一个条件如果数据等于包头并且RXflag==0才执行接收;(如果不满足就跳过)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则