




USART外设



USART外设的使用思路:
第一步,开启时钟,把需要用的USART和GPIO的时钟打开
第二步,GPIO初始化,把TX配置成复用输出,RX配置成输入
第三步,配置USART,直接使用一个结构体(把这里所有的参数都配置好)
第四步,如果你只需要发送的功能,就直接开启USART,初始化就结束了
如果你需要接收的功能,可能还需要配置中断
在开启USART之前,再加LITConfig和NVIC的代码
初始化完成之后,如果要发送数据,调用一个发送函数
如果要接收数据,就调用接收的函数
如果要获取发送和接收的状态,就调用获取标志位的函数





![]()
如果多个串口都想用printf,用sprintf,可以把格式化字符输出到一个字符串里



USART串口数据包
发送数据包
HEX数据包
优点是,传输最直接,解标数据非常简单,比较适合一些模块发送原始的数据,比如一些使用串口通信的陀螺仪、温湿度传感器
缺点就是灵活性不足、载荷容易和包头包尾重复

1.包头包尾并不是全部都需要的(比如我们可以只要一个包头,把包尾删掉)
2.固定包长和可变包长的选择问题:
对应HX数据包来说,如果你的载荷会出现和包头包尾重复的情况,最好选择固定包长
如果载荷不会和包头包尾重复,可以选择可变包长
3.数据和包头包尾重复,可能会引起误判,解决方法:
第一种,限制载荷数据的范围,在发送的时候,对数据进行限幅
第二种,如果无法避免载荷数据和包头包尾重复,尽量使用固定长度的数据包,这样由于载荷数据是固定的,只要我们通过包头包尾对齐了数据
在接收载荷数据的时候,我们并不会判断它是否是包头包尾
在接收包头包尾的时候,我们会判断它是不是包头包尾
第三种,就是增加包头包尾的数量,并且让它尽量呈现出载荷数据出现不了的状态
文本数据包
优点是,数据直观易理解,非常灵活,比较适合一些输入指令进行人机交互的场合,比如蓝牙模块常用的AT指令,CNC和3D打印机常用的G代码
缺点就是解析效率低

接收数据包



18万+

被折叠的 条评论
为什么被折叠?



