电子产业一站式赋能平台

PCB联盟网

搜索
查看: 228|回复: 0
收起左侧

STM32CubeMX生成的代码中串口如何发送数据?

[复制链接]

359

主题

364

帖子

2887

积分

三级会员

Rank: 3Rank: 3

积分
2887
发表于 2025-1-13 21:00:00 | 显示全部楼层 |阅读模式
第一节 硬件解读   大家的开发板到手之后,可以看见,只有一个USB口,那个口就是串口,开发板A和开发板B共用一个串口,通过按键切换。
1 O( ]- E2 a6 _* Q' ?7 B/ g, S我们以开发板A为例,原理图如下:
( d4 v) G* J3 V2 z

txk3ysw1o0564065446449.png

txk3ysw1o0564065446449.png
8 T7 B0 o1 b0 k. [& d6 r
开发板A芯片上面的PA2和PA3分别是NODEA_USART_TX和NODEA_USART_RX,而开发板A和Debugger开发板的连接如下:1 ^3 L, {( o- ]) z

o3v3vner4es64065446549.png

o3v3vner4es64065446549.png

- V$ `# o, m- w1 R7 f+ Q    % w% j$ v9 E& Q; _

shnidnuxmhi64065446650.png

shnidnuxmhi64065446650.png

& ?! B: Q9 {. t) D) F       通过查看CH443K芯片的引脚可以得到,SEL引脚的高低电平,可以让CH443K芯片在1脚4脚连接或者3脚4脚连接中选择。CH443K芯片引脚说明如下:. v; R5 h/ @! _1 v

mgjsamcwo3s64065446750.png

mgjsamcwo3s64065446750.png

" F0 @0 m$ q0 b* P" Z当CH443K芯片的SEL为高电平时,其芯片COM和CH1引脚导通。DEBUGGER_TX和B_TX导通,DEBUGGER_RX和B_RX导通;反之DEBUGGER_TX和A_TX导通,DEBUGGER_RX和A_RX导通。, U! X( i) v; L/ P: q7 g5 p
那么,DEBUGGER_TX和DEBUGGER_RX连接在哪?当然是DAPLINK板的MCU上面啦,如下图:   
- \4 b4 d$ S+ j

ujg1nwxqjcy64065446850.png

ujg1nwxqjcy64065446850.png

: O; {* s) _' H3 Y) _7 u9 E2 o连接到Debugger板的MCU之后,这个MCU通过内部程序(不需要我们写,比赛的时候已经写好了)转到唯一的USB口上,也就是我们的串口上。
& c0 `9 u9 i5 V9 c* ?$ k

ligbqikat1c64065446950.png

ligbqikat1c64065446950.png

1 L  r0 A; ?) u第二节 CuebMX的配置
: u; I7 }+ p1 m  第一步:选择PA2的引脚的USART2_Tx功能,如下图:    $ D' c+ a1 J# f2 h9 @- N$ y

0gphiy4duom64065447050.png

0gphiy4duom64065447050.png

" I$ c2 ]# b# y( z* r& C: O# @) `第二步:选择PA3引脚的USART_RX功能,如下图:
- W% j. E) `2 h9 Y3 z" p) @

d0wirninwkx64065447150.png

d0wirninwkx64065447150.png

3 E: A2 R/ `7 q/ N+ J第三步:发现USART相关的引脚是黄色的,不是绿色的,这是为什么呢?注意:黄色是异常提醒,绿色是正常的。    # W% z9 U+ o% D4 p3 H) e0 }6 {" x7 u* N( g

0djiczom24z64065447250.png

0djiczom24z64065447250.png
! a( I! h) r# \" k  q: M  m
第四步:如下图配置USART2。注意:2代表的是异步全双工通信;6代表波特率,数据长度,校验位和停止位。这里波特率是115200,比赛基本上都是9600。
. r5 G; N) C: v

xbgjxmdy0bf64065447350.png

xbgjxmdy0bf64065447350.png

6 u, u  ^& j/ E" Q# L! m3 a其中:具体Mode配置信息如下:
2 w" H: n" h; H2 g# {. {2 A0 ?           3 X$ b( c" a  n0 P: B' k
Mode:代表串口模式,配置为(异步)Asynchronous,(同步主机)Synchronous Master,(同步从机)Synchronous Slave,(单线半双工)Single Wire (Half - Duplex),(多处理器通信)Multiprocessor Communication,(红外通讯)IrDA ,(局域互联网模式)LIN ,( 智能卡模式)SmartCard ;   
( E6 f' {, E  q8 r2 D0 u+ ]           0 e, M( h- u3 U% I# X
Hard Flow Control RS232:代表RS232的硬件控制流,常用引脚为CTS,RTC,CTS/RTS或者Disabled;
7 p0 Z  e: p" u3 y; l/ [& @           
7 ^' [: P7 {# Z6 ]) ]' VHard Flow Control RS485:代表RS485的硬件控制流;7 o% z  N8 X# I* L, E; K3 H& D
           
3 B0 e7 f, j1 O5 v, W4 ^$ i其中:具体Configuration配置信息如下:0 I1 ?& W$ ^- n; S. q
           
3 M3 a" c9 h* Q. IBaud Rate:代表串口波特率,常用波特率为9600,115200等;
3 u% C/ @7 D5 I2 ~1 i( O           
: b( t8 ~( }4 |: ^0 [9 ]Word Length:代表字节位,常用字节为:7位,8位或者9位;3 _0 q# c! f, b% `/ i. x3 y( i  [
           ! v/ Q2 v2 s: Y3 _" x
Parity:代表校验位;常用为:(无校验)None,(奇校验)Even或者Odd(偶校验)Odd;* K% D* ]8 y7 H. z1 n& `
           
- \# m2 O# S8 Q1 YStop Bits:代表停止位,常用为:0.5,1,1.5或者2;0 _& O; R( m+ J' ?0 H% n) w
           
! `7 w4 f4 \! E3 MData Direction:代表数据传输方向,常用为(发送和接收)Receive and Transmit,(接收)Receive或者(发送)Transmit;! i- Z! Z; F0 P7 @
           
; l2 _2 ]0 z6 B4 `. b2 G" a$ ROver Sampling:代表过采样,常用为8倍采样和16倍采样,8倍采样,也就是一个数据位采样8次,16倍则是16次。采样率高精度会高一些,当然相应的功耗也会变高;3 {. M5 [  F6 H; [: U2 j
           - n5 v9 U9 v+ R4 i. w; P$ k' I0 m
Single Sample:代表单次采样,使能时使用单次采样值,否则使用三次采样值。前面的过采样会有8或16次采样值,当选择单次采样时,会使用其中的一次采样值作为数据位逻辑电平的结果。三次采样则用三次采样的判断结果为准。同样三次采样也是为了确保数据的准确性。    & }" _" a8 {% N" S" ^2 ?
           ) i- b+ T) E# V
ClockPrescaler:代表时钟预分频器;7 e) U( F1 T! |5 G) i9 F
           ( W. j" t9 [! Q: B9 h
Fifo Mode:代表数据缓存模式;
* }2 m* \" H. l2 O% I9 F5 ^           2 R3 z) M9 z' P+ G# }1 l
Txfifo Threshold:代表发送数据的阈值;6 ?9 y9 u. a' x! X% F3 i
           
% ]8 V9 h( l8 ~  {1 x7 hRxfifo Threshold:代表接收数据的阈值;
3 D% {) L' u# U" A( k+ \           & Z6 n8 O9 A$ |3 ?
Auto Baudrate:代表自动波特率,顾名思义,可以根据接收到的数据进行波特率自适应;) C* m: a8 F3 o$ C4 g
           : n1 t0 f& ]' f0 c1 O
TX Pin Active Level Inversion:代表发送电平反转,发送引脚电平极性反转,正常情况下空闲电平为高电平,使能该功能后变成空闲电平为低电平;$ O+ k( B+ Y/ i! q
           ) x$ a& _8 e* ~0 {7 S9 @! n
RX Pin Active Level Inversion:代表接收电平反转,接收引脚电平极性反转,正常情况下空闲电平为高电平,使能该功能后变成空闲电平为低电平;
+ X& W) _) a: g           7 R6 x" m* G. v* w- ^
Data Inversion:代表数据电平反转收发数据的逻辑电平极性反转,正常是高电平为逻辑1,低电平为逻辑0,使能该功能后则变成低电平为逻辑1,高电平为逻辑0。校验位也随着反转;
2 g& b: E/ u3 Q5 U3 }' d. b! K           4 n1 o" o8 S; l' V7 R$ ?, q6 Q% M
TX and RX Pins Swapping:代表收发引脚互换,接收和发送引脚互换,适用于外部硬件连线错误时进行切换。
6 F5 x5 ~- |9 a  S) }' F7 f           " \; _* G4 l/ r
Overrun:代表溢出检测,:用于开启接收溢出检测,使用该功能后,当接收数据未取出时,又接收到一个数据,此时会触发一个溢出标志。   
& D) g0 m* V' p# q+ b4 J  L! V0 k           , D2 U0 o3 g; w
DMA on RX Error:代表接收错误时不禁用DMA,使能该功能后,即使出现接收错误也不会关闭DMA传输;2 ~5 E, i9 |# u0 K# D
           
* m8 V5 ]$ X! kMSB First:代表数据高位先发,正常数据是先发低位再发高位,使能该功能后可以先发高位数据;
4 V" H! P7 q( ]! L  a' ^第三节 MDK代码! v4 \* o8 F+ E( ^8 Y7 ?7 f! i
  第一步:编写串口发送函数,如下图:
( o" g; n2 o" e* {+ q& a; e

lthuce3mksf64065447451.png

lthuce3mksf64065447451.png
# X  x8 k1 W0 h$ ~1 b
第二步:声明串口发送函数,如下图:    & Y! S! t; P7 F& {) s5 q

lu0zh30455o64065447551.png

lu0zh30455o64065447551.png

1 p+ b0 C4 O9 E  m- G  e2 s$ V/ k% f第三步:编写主函数,如下图:7 i2 L9 ?" c' R5 h: n

44unr3tec2k64065447651.png

44unr3tec2k64065447651.png

# j2 V  a8 P9 S4 Y; Y- _' J第四步,配置MicroLIB库,如下:【注意:不使用printf,可以不配置;如果使用printf但是不配置,程序将卡死】    ( s, m) c. s2 B( z7 l

5qi1khowql064065447751.png

5qi1khowql064065447751.png

4 Q3 S- w( H/ G+ P/ O1 B第五步:配置好下载器之后,编译代码,下载即可。
' A0 S  g9 i1 o- z9 A第六步:打开串口软件,如下图配置:选择串口号;接收缓存区选择HEX模式,波特率选择115200;串口号请扫描,选择正确的串口号,不一定是COM4;最后打开串口。* T" p, G" Y9 Q5 O1 w) {( R

biycoznr1dd64065447851.png

biycoznr1dd64065447851.png

; E$ o6 a$ n% ~    8 J+ j) m3 f4 T6 x
第四节 实验现象  
7 j4 y8 T- q; z: P$ w/ E  注意:! U" W; X# D4 s3 e, }0 X
1,请用USB线连接电脑与开发板;; ~+ P# G4 U- q0 f  R- W2 S
2,请选择A开发板;$ K& i0 }' x1 x$ T
3,一定要勾选微库。1 U) x5 ]) q7 ?* J! y  Z) T
现象:
" ~" E. e7 L' m7 w3 `8 z$ @8 n1,串口发送以115200波特率发送数据。* |/ s: I6 n2 Y' [% o( Z- _
来源:撞上电子微信公众号9 O" c; a2 C; d& V
版权:东莞市东城墨竹公子电子工作室
) Q/ P' ]5 p/ K1 K1 u2 b- Y日期:2024.11.133 w( B+ }6 l. g
第五节 课后作业
" h% t5 S& a% I8 p# G/ }1 ]  利用按键,串口打印按键按下的次数。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表