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

【经验分享】STM32F429IGT6 USART串口初始化结构体 总结

[复制链接]
STMCU小助手 发布时间:2022-5-7 17:37
标准库函数对每个外设都建立了一个初始化结构体,比如 USART_InitTypeDef,结构体成员用于2 ~% `( U- B  v
设置外设工作参数,并由外设初始化配置函数,比如 USART_Init() 调用,这些设定参数将会设置) Z6 I( _2 h* L4 i( a( f
外设相应的寄存器,达到配置外设工作环境的目的。
# y3 J9 x& j! z2 Z) c" C) \9 l) q/ P# a8 W8 A$ i
初始化结构体定义在 stm32f4xx_usart.h 文件中,初始化库函数定义在 stm32f4xx_usart.c 文件中.
# Z3 [) H/ E% B( r6 M9 aUSART 初始化结构体$ f0 `1 G0 W8 @/ ^  ~3 j! e
参考正点原子和野火手册- }; e* |% @( A# u/ a

) m- f3 v9 O$ a, w1 o9 V. I4 C0 e/ y; I  E
  1. typedef struct {
    ( x/ ^( G8 k  W5 d. n- K
  2. uint32_t USART_BaudRate; // 波特率( Z/ g0 d( ?% I6 Y0 I: [4 R
  3. uint16_t USART_WordLength; // 字长, t- c% ?9 f, M3 R- _% u
  4. uint16_t USART_StopBits; // 停止位) T  y+ h8 f4 z9 `' u7 k, `( Y, W
  5. uint16_t USART_Parity; // 校验位
    . B* M7 {3 n* O8 w
  6. uint16_t USART_Mode; // USART 模式
    4 ?/ n* d& Y. c% q
  7. uint16_t USART_HardwareFlowControl; // 硬件流控制
    ( N1 P! o1 b. W7 m( ^3 f  }
  8. } USART_InitTypeDef;
复制代码

! e; y5 q* R% w- tUSART_BaudRate:波特率设置。一般设置为 2400、9600、19200、115200。标准库函数会根据0 ]' Q& Y' H5 I# w* I
设定值计算得到 USARTDIV 值,并设置 USART_BRR 寄存器值。
; P! f$ e5 \* I8 o) v( K* v& L$ ^. `* W& `9 I& K; D0 X$ f
USART_WordLength:数据帧字长,可选 8 位或 9 位。它设定 USART_CR1 寄存器的 M 位的值。
# c) t0 k' [2 w: M. d3 [" M如果没有使能奇偶校验控制,一般使用 8 数据位;如果使能了奇偶校验则一般设置为 9 数据位。
7 k3 U& `+ [9 G1 {& b
& J) V1 X- l' V1 g! c$ r" p) OUSART_StopBits:停止位设置,可选 0.5 个、1 个、1.5 个和 2 个停止位,它设定 USART_CR2
9 s% P5 T, H1 b寄存器的 STOP[1:0] 位的值,一般我们选择 1 个停止位。9 P) J/ c$ A! H, ~2 z) n7 p

$ B9 s6 t& D/ r* j* H6 f: r1 `  ~; sUSART_Parity:奇偶校验控制选择,可选 USART_Parity_No(无校验)、USART_Parity_Even(偶$ }7 \5 }$ _4 n, D' O( T) ~
校验) 以及 USART_Parity_Odd(奇校验),它设定 USART_CR1 寄存器的 PCE 位和 PS 位的值。1 o+ [" V9 W) N' @+ B, e
# U( K& n0 h" a0 P& }9 [# w
USART_Mode:USART 模式选择,有 USART_Mode_Rx 和 USART_Mode_Tx,允许使用逻辑或9 ]: T. o. p- s# q8 B" e& o, @2 R1 T
运算选择两个,它设定 USART_CR1 寄存器的 RE 位和 TE 位。
7 |: }7 ^, {/ G( ]: s( Z. k
) z# K" ~8 ?  aUSART_HardwareFlowControl:硬件流控制选择,只有在硬件流控制模式才有效,可选有使能 RTS、使能 CTS、 同时使能 RTS 和 CTS、不使能硬件流。
7 O6 R+ F6 s+ ~  c
, i  F# |+ u. a, M5 h# i2 P) R4 x$ bUSART 时钟初始化结构体
9 J  Y" N6 e' a7 D% x* D& F7 I5 t5 W9 I% X% x- E# l
  1. typedef struct {- w6 V- G( V0 [: L) q
  2. uint16_t USART_Clock; // 时钟使能控制
    ) F& C1 S% D$ i' }
  3. uint16_t USART_CPOL; // 时钟极性# C- w. q; B3 w% f& h: {2 K
  4. uint16_t USART_CPHA; // 时钟相位
    ) t4 q: p; ?& b
  5. uint16_t USART_LastBit; // 最尾位时钟脉冲
    # Y. S1 ?: E8 \, C& s3 H
  6. } USART_ClockInitTypeDef;
复制代码

; |$ ~6 U+ g5 ^- D1) USART_Clock:同步模式下 SCLK 引脚上时钟输出使能控制,可选禁止时钟输出(USART_Clock_Disable) 或开启时钟输出 (USART_Clock_Enable);如果使用同步模式发送,一般都需要开启时钟。它设定 USART_CR2 寄存器的 CLKEN 位的值。
/ s' X  D+ j- r
& Z" b- f" a6 TUSART_CPOL:同步模式下 SCLK 引脚上输出时钟极性设置,可设置在空闲时 SCLK 引脚为低电平 (USART_CPOL_Low) 或高电平 (USART_CPOL_High)。它设定 USART_CR2 寄存器的 CPOL位的值。' `& l5 b* t; J  D5 r; f  M

% o" Z1 A( R2 U1 G0 cUSART_CPHA:同步模式下 SCLK 引脚上输出时钟相位设置,可设置在时钟第一个变化沿捕获数据 (USART_CPHA_1Edge) 或在时钟第二个变化沿捕获数据。它设定 USART_CR2 寄存器的CPHA 位的值。USART_CPHA 与 USART_CPOL 配合使用可以获得多种模式时钟关系。
1 p/ K' _4 H% ~; _* d2 I
0 J- S* m% M9 r2 _1 U# X) a6 ZUSART_LastBit:选择在发送最后一个数据位的时候时钟脉冲是否在 SCLK 引脚输出,可以是不输出脉冲 (USART_LastBit_Disable)、输出脉冲 (USART_LastBit_Enable)。它设定 USART_CR2 寄存器的 LBCL 位的值。
+ L2 c) Q. j3 @; A) u
  w4 R' I3 d, M, G  m; I1 `  f9 T; s/ ?# y
收藏 评论0 发布时间:2022-5-7 17:37

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版