[其他ST产品] STM32串口发送字符串的几种写法

[复制链接]
990|13
 楼主| jcky001 发表于 2023-10-27 15:28 | 显示全部楼层 |阅读模式
本帖最后由 jcky001 于 2023-10-27 15:32 编辑

STM32用USART发送字符串

44365653b67309b2f5.png
34376653b673fd190f.png
26066653b674a2f0fb.png
代码含义是:当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1,USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET。


 楼主| jcky001 发表于 2023-10-27 15:33 | 显示全部楼层
代码常见写法,及其接收数据效果1
18246653b67b8b430c.png

这种写法在不是特殊(不掉电、不待机等)情况下,问题不大,USART数据会成功发送出去。但是在上面说的特殊情况下,问题就来了,代码只将数据放到了发送缓冲区,而没有发送出去就掉电或待机了,这个时候其实最后两个字符是没有发送出去的。

2

71843653b67d76f101.png

这种写法达到的效果和上面存在不同的就是倒数第二个数据发送出去了,也就是只有最后一个字符是没有发送出去的。

 楼主| jcky001 发表于 2023-10-27 15:35 | 显示全部楼层
49605653b68261815d.png

这种写法达到的效果和上面两种写法有不一样,发送了10个字符。



47232653b683f0f565.png

这种写法按理说可以实现功能,但实际多次试验结果确实第一字节数据丢失了。




 楼主| jcky001 发表于 2023-10-27 15:36 | 显示全部楼层
50712653b68897c144.png

这种写法是比较完成,为了保守起见,在特殊情况下使用该写法。

帛灿灿 发表于 2023-12-10 08:03 | 显示全部楼层

使用Optional简化if判空
Bblythe 发表于 2023-12-10 09:06 | 显示全部楼层

不同的代码逻辑就代表了不同的策略
童雨竹 发表于 2023-12-10 11:02 | 显示全部楼层

通过对判断条件取反,代码在逻辑表达上会更加清晰
Pulitzer 发表于 2023-12-10 12:05 | 显示全部楼层

会以switch-case的方式出现
公羊子丹 发表于 2023-12-10 13:08 | 显示全部楼层

代码量小的时候用来做条件判断
公羊子丹 发表于 2023-12-10 14:01 | 显示全部楼层

整流器或功率开关管与每个电容端的连线长度和宽度都要一样
Wordsworth 发表于 2023-12-10 15:04 | 显示全部楼层

不要根据不同的参数类型走不同的代码逻辑
Clyde011 发表于 2023-12-10 16:07 | 显示全部楼层

这是个再正常不过的coding习惯
万图 发表于 2023-12-10 18:03 | 显示全部楼层

对于没有else的场景,使用ifPresent即可
Uriah 发表于 2023-12-10 19:06 | 显示全部楼层

每个Strategy交由Spring管理,并在构造后注册
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1671

主题

5895

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部