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

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

[复制链接]
STMCU小助手 发布时间:2022-5-7 17:37
标准库函数对每个外设都建立了一个初始化结构体,比如 USART_InitTypeDef,结构体成员用于
% `" q( B- w' Z设置外设工作参数,并由外设初始化配置函数,比如 USART_Init() 调用,这些设定参数将会设置* l; T- z, E  {; v  V' ~
外设相应的寄存器,达到配置外设工作环境的目的。
% M0 G8 y- @# G: j7 l- j! ]- T4 k# @$ Y3 |% C2 ]
初始化结构体定义在 stm32f4xx_usart.h 文件中,初始化库函数定义在 stm32f4xx_usart.c 文件中.
0 T& s( C4 X/ f5 D7 Z; |) EUSART 初始化结构体
. j4 C' }/ y' b, W" ?( @参考正点原子和野火手册* F, ]9 F; G0 L: A

/ h% @6 A* w! q! M
  1. typedef struct {
    $ J# D" @/ }5 |# z, h/ {
  2. uint32_t USART_BaudRate; // 波特率0 h1 |1 U) j  M, F3 a% B! Q1 D. T
  3. uint16_t USART_WordLength; // 字长
    $ k1 B# Y  D  G, a% ^
  4. uint16_t USART_StopBits; // 停止位
    ! @; a9 e: [1 s6 j6 x$ J( Z8 W2 e
  5. uint16_t USART_Parity; // 校验位
    5 J" K& G! g0 t2 x
  6. uint16_t USART_Mode; // USART 模式
    $ L! @" x9 S3 E+ f6 y
  7. uint16_t USART_HardwareFlowControl; // 硬件流控制$ _' k6 |9 k  f9 j
  8. } USART_InitTypeDef;
复制代码

, W* [' n; |0 e8 {% KUSART_BaudRate:波特率设置。一般设置为 2400、9600、19200、115200。标准库函数会根据2 |" i1 e$ ~5 ?. c( E
设定值计算得到 USARTDIV 值,并设置 USART_BRR 寄存器值。
! ]3 O) l: A$ R; ]0 K( g  C4 F6 Z+ X: Y6 L% ~6 ?: j
USART_WordLength:数据帧字长,可选 8 位或 9 位。它设定 USART_CR1 寄存器的 M 位的值。
* w0 ]5 X) R. n; G7 H2 A" T7 E  \) M如果没有使能奇偶校验控制,一般使用 8 数据位;如果使能了奇偶校验则一般设置为 9 数据位。: d4 ~/ K, k: }" f

# e. G8 V9 e/ ]5 [& @% r  rUSART_StopBits:停止位设置,可选 0.5 个、1 个、1.5 个和 2 个停止位,它设定 USART_CR2, B! A- Z3 [$ a0 O" l% _
寄存器的 STOP[1:0] 位的值,一般我们选择 1 个停止位。
3 P1 M& U# U7 L2 ?0 L: Y) Q( K( z4 P- `
USART_Parity:奇偶校验控制选择,可选 USART_Parity_No(无校验)、USART_Parity_Even(偶
9 O0 r2 P* t( I/ U  n) Y* @校验) 以及 USART_Parity_Odd(奇校验),它设定 USART_CR1 寄存器的 PCE 位和 PS 位的值。9 E1 D3 J3 ~# T$ Q/ S, P

; C; n" E$ C. YUSART_Mode:USART 模式选择,有 USART_Mode_Rx 和 USART_Mode_Tx,允许使用逻辑或
7 r: T0 o& k9 c1 y运算选择两个,它设定 USART_CR1 寄存器的 RE 位和 TE 位。
6 F4 n; }6 U  C, e/ k% `+ O* g# B) t) }% [: y
USART_HardwareFlowControl:硬件流控制选择,只有在硬件流控制模式才有效,可选有使能 RTS、使能 CTS、 同时使能 RTS 和 CTS、不使能硬件流。6 E! l9 c$ ~) h1 z6 m7 u, Q8 G

* l, _3 m. S) r- N7 UUSART 时钟初始化结构体4 b# u5 o( I$ X; r+ b
) a* i( z+ a* e7 s/ I+ C
  1. typedef struct {8 M" B. J- F# r* x+ c" [
  2. uint16_t USART_Clock; // 时钟使能控制& V" n% S  W4 \- A8 j+ _
  3. uint16_t USART_CPOL; // 时钟极性. i4 H& S, U2 }( }  t( M) |
  4. uint16_t USART_CPHA; // 时钟相位3 _4 _. K0 {) I* K0 H& R( j4 ^' L6 F
  5. uint16_t USART_LastBit; // 最尾位时钟脉冲* _/ K# q$ V) x4 L6 k8 h, T" e
  6. } USART_ClockInitTypeDef;
复制代码

, T0 B, @1 F7 J- r* M% P9 J. [1) USART_Clock:同步模式下 SCLK 引脚上时钟输出使能控制,可选禁止时钟输出(USART_Clock_Disable) 或开启时钟输出 (USART_Clock_Enable);如果使用同步模式发送,一般都需要开启时钟。它设定 USART_CR2 寄存器的 CLKEN 位的值。
% y. d" n+ q7 Z5 w* M& s( L) _7 {  {; N' h6 D2 ^* @
USART_CPOL:同步模式下 SCLK 引脚上输出时钟极性设置,可设置在空闲时 SCLK 引脚为低电平 (USART_CPOL_Low) 或高电平 (USART_CPOL_High)。它设定 USART_CR2 寄存器的 CPOL位的值。
! p$ P) z0 I8 l  n! I( K. x0 w+ k  p: M
USART_CPHA:同步模式下 SCLK 引脚上输出时钟相位设置,可设置在时钟第一个变化沿捕获数据 (USART_CPHA_1Edge) 或在时钟第二个变化沿捕获数据。它设定 USART_CR2 寄存器的CPHA 位的值。USART_CPHA 与 USART_CPOL 配合使用可以获得多种模式时钟关系。0 A: v# o" p0 ^2 v
9 m) @. ^5 P) g' Q9 j5 n
USART_LastBit:选择在发送最后一个数据位的时候时钟脉冲是否在 SCLK 引脚输出,可以是不输出脉冲 (USART_LastBit_Disable)、输出脉冲 (USART_LastBit_Enable)。它设定 USART_CR2 寄存器的 LBCL 位的值。. B6 i( h) y- }" w: [; W& u0 z* o

5 E7 B! N2 T. d! |; _+ A& l# ?6 o9 ]
赞 收藏 评论0 发布时间:2022-5-7 17:37

举报

0个回答

所属标签

相似技术帖

官网相关资源

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