你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32串口如何发送字符串经验分享

[复制链接]
攻城狮Melo 发布时间:2023-11-11 14:14
STM32用USART发送字符串
$ ~+ j( @/ `; [4 K) }+ u( }4 U; i8 A1 a( T8 X  V* |
1.png
3 m4 l# e. p: F
0 I: u0 X; F" y% U1 h' N7 k1 {
微信图片_20231111140101.jpg
* L' z2 A' U" A7 d2 {- h" [
2 t$ H  }9 p2 j+ C3 P
3.jpg

2 U: h$ U! F/ D9 g! ^0 d
, D5 p0 w6 b/ A7 A" r
4.png
6 v% ?9 q' w8 g; W0 M

( W* U! ?$ s8 T9 z( `( N; e代码含义是:
; L. R' o+ g; ^/ G* V当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1,USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET。  q. ^5 `2 c" r5 F0 s

1 v' k8 b% q5 |8 u2 s7 Z: ?$ e代码常见写法,及其接收数据效果
0 p% V2 P+ e2 p: V; W) E7 @13 @  ]  m' E. g/ c1 Q3 w. K
5.png

1 Q' J. d4 W( b0 h# |9 m1 m  W- K, Y, f" e
6.png

7 D: ^5 A3 e9 e: C
/ I  r$ N/ |0 p+ b3 H这种写法在不是特殊(不掉电、不待机等)情况下,问题不大,USART数据会成功发送出去。但是在上面说的特殊情况下,问题就来了,代码只将数据放到了发送缓冲区,而没有发送出去就掉电或待机了,这个时候其实最后两个字符是没有发送出去的。" H4 V. q4 E# v9 a! K4 ]

3 I, R( [8 D) W/ w9 d% @2
/ K. E$ @) m6 y; c4 b2 g4 H( I! ~' S0 j) @' y+ c( x3 W
7.png
3 f! Y. g$ W0 T+ o% [- S3 ~
  `' g% f" P# \# `1 g4 Q! S4 {7 b
8.png
. \9 L# W# {. a/ F; g; `) X0 S6 ]

3 M- q, E6 \4 B# [9 M2 R这种写法达到的效果和上面存在不同的就是倒数第二个数据发送出去了,也就是只有最后一个字符是没有发送出去的。
& T: a- ?6 O4 Z* N/ W) z
; B/ W* y" G+ {$ d9 [' w" P9 z
& C* Z4 p+ h0 b- G: I% k. D% ]
31 H) R6 e+ |" ]. F. I

3 T3 o! N" t5 m
9.png
4 j+ H# T4 U: X5 b7 b' h& |

4 Z( v- m3 A8 ^8 ?& I4 ?
10.png

- M# d5 V4 }/ F; A/ i( j( S
, D7 v# ^4 J  v$ s0 B5 k8 ?6 r7 F
这种写法达到的效果和上面两种写法有不一样,发送了10个字符。# n( E9 X/ v# g& w, Y2 t: E* G

8 [+ |% q/ c: M  |: c1 g
' h3 N; y( n) s. k2 b% g
4
4 B- I% H' P6 R- G- D. O# y1 }
" h3 ^7 J7 V# [6 T- T
11.png
& e  J3 `4 N& a, ]" ~' {  ~# h. j# B
; x) Q0 R) m1 [* |7 j2 i; H
12.png

/ Q1 T, _* Q1 \$ \3 c( Q0 |
2 I* e  w9 X9 d3 M8 G! C& E* b2 ~这种写法按理说可以实现功能,但实际多次试验结果确实第一字节数据丢失了。' N' P* P# l7 W1 G; O# @2 v8 f. o2 L

+ i! b/ ^$ o! r) u$ a

% T+ {! D1 P3 g, J% [9 c* v- n58 |* i8 ]/ |$ J* }( V. l

. i. Z4 H  z) e- L# P: ?$ k' _# A, n: ]
13.png
: A! M& C- `/ g1 w" c
! y: W* x4 o- W/ M1 f
14.png
4 l( Z8 E2 i" L! C# p
4 R/ _, Q7 T- b) W6 o% {+ I% A3 I
这种写法是比较完成,为了保守起见,在特殊情况下使用该写法。
* w! C. M( W9 E$ \$ O1 }- f- S
3 n* f9 M# b( j/ i7 M5 U" _' e$ |) b! Q  Q3 w
转载自: 一起学嵌入式2 w9 O# y$ A: `. ]9 ?) d
如有侵权请联系删除
7 V  @, L5 s, D1 y% ~" y, ?
收藏 评论0 发布时间:2023-11-11 14:14

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版