STM32F103C8T6——USART通信

USART外设

USART外设的使用思路:

第一步,开启时钟,把需要用的USART和GPIO的时钟打开

第二步,GPIO初始化,把TX配置成复用输出,RX配置成输入

第三步,配置USART,直接使用一个结构体(把这里所有的参数都配置好)

第四步,如果你只需要发送的功能,就直接开启USART,初始化就结束了

如果你需要接收的功能,可能还需要配置中断

在开启USART之前,再加LITConfig和NVIC的代码

初始化完成之后,如果要发送数据,调用一个发送函数

如果要接收数据,就调用接收的函数

如果要获取发送和接收的状态,就调用获取标志位的函数

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

USART串口数据包

发送数据包

HEX数据包

优点是,传输最直接,解标数据非常简单,比较适合一些模块发送原始的数据,比如一些使用串口通信的陀螺仪、温湿度传感器

缺点就是灵活性不足、载荷容易和包头包尾重复

1.包头包尾并不是全部都需要的(比如我们可以只要一个包头,把包尾删掉)

2.固定包长和可变包长的选择问题:

对应HX数据包来说,如果你的载荷会出现和包头包尾重复的情况,最好选择固定包长

如果载荷不会和包头包尾重复,可以选择可变包长

3.数据和包头包尾重复,可能会引起误判,解决方法:

第一种,限制载荷数据的范围,在发送的时候,对数据进行限幅

第二种,如果无法避免载荷数据和包头包尾重复,尽量使用固定长度的数据包,这样由于载荷数据是固定的,只要我们通过包头包尾对齐了数据

在接收载荷数据的时候,我们并不会判断它是否是包头包尾

在接收包头包尾的时候,我们会判断它是不是包头包尾

第三种,就是增加包头包尾的数量,并且让它尽量呈现出载荷数据出现不了的状态

文本数据包

优点是,数据直观易理解,非常灵活,比较适合一些输入指令进行人机交互的场合,比如蓝牙模块常用的AT指令,CNC和3D打印机常用的G代码

缺点就是解析效率低

接收数据包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值