打印
[其他ST产品]

STM32串口发送字符串的几种写法

[复制链接]
417|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2023-10-27 15:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jcky001 于 2023-10-27 15:32 编辑

STM32用USART发送字符串




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


使用特权

评论回复
沙发
jcky001|  楼主 | 2023-10-27 15:33 | 只看该作者
代码常见写法,及其接收数据效果1


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

2



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

使用特权

评论回复
板凳
jcky001|  楼主 | 2023-10-27 15:35 | 只看该作者


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





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




使用特权

评论回复
地板
jcky001|  楼主 | 2023-10-27 15:36 | 只看该作者


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

使用特权

评论回复
5
帛灿灿| | 2023-12-10 08:03 | 只看该作者

使用Optional简化if判空

使用特权

评论回复
6
Bblythe| | 2023-12-10 09:06 | 只看该作者

不同的代码逻辑就代表了不同的策略

使用特权

评论回复
7
童雨竹| | 2023-12-10 11:02 | 只看该作者

通过对判断条件取反,代码在逻辑表达上会更加清晰

使用特权

评论回复
8
Pulitzer| | 2023-12-10 12:05 | 只看该作者

会以switch-case的方式出现

使用特权

评论回复
9
公羊子丹| | 2023-12-10 13:08 | 只看该作者

代码量小的时候用来做条件判断

使用特权

评论回复
10
公羊子丹| | 2023-12-10 14:01 | 只看该作者

整流器或功率开关管与每个电容端的连线长度和宽度都要一样

使用特权

评论回复
11
Wordsworth| | 2023-12-10 15:04 | 只看该作者

不要根据不同的参数类型走不同的代码逻辑

使用特权

评论回复
12
Clyde011| | 2023-12-10 16:07 | 只看该作者

这是个再正常不过的coding习惯

使用特权

评论回复
13
万图| | 2023-12-10 18:03 | 只看该作者

对于没有else的场景,使用ifPresent即可

使用特权

评论回复
14
Uriah| | 2023-12-10 19:06 | 只看该作者

每个Strategy交由Spring管理,并在构造后注册

使用特权

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

本版积分规则

1504

主题

4518

帖子

6

粉丝