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

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

[复制链接]
STMCU小助手 发布时间:2022-5-7 17:37
标准库函数对每个外设都建立了一个初始化结构体,比如 USART_InitTypeDef,结构体成员用于$ L) I" z+ a9 `5 y3 Z3 @
设置外设工作参数,并由外设初始化配置函数,比如 USART_Init() 调用,这些设定参数将会设置
2 G& E  Q. J" T# i外设相应的寄存器,达到配置外设工作环境的目的。/ l5 x. \4 U3 z2 C/ j, ]

/ {* r8 ?. k' U" z9 s初始化结构体定义在 stm32f4xx_usart.h 文件中,初始化库函数定义在 stm32f4xx_usart.c 文件中.$ }/ N$ I1 m8 G$ _9 ?
USART 初始化结构体5 \3 ^3 V- u- n" t
参考正点原子和野火手册
! \4 ]/ x* D0 t$ I
" E* `6 h. X; u
  1. typedef struct {
    . r, [2 ^8 }3 r6 Q
  2. uint32_t USART_BaudRate; // 波特率( D3 H' e/ o. ?( g
  3. uint16_t USART_WordLength; // 字长
    0 r2 R+ R1 S6 m# j2 n, k
  4. uint16_t USART_StopBits; // 停止位
    ; w" {" D) j/ @' j3 `
  5. uint16_t USART_Parity; // 校验位
    ) O) f) U8 `( U  h
  6. uint16_t USART_Mode; // USART 模式
    % p' h4 O* d; ^0 W  u9 J$ J
  7. uint16_t USART_HardwareFlowControl; // 硬件流控制+ ?8 T1 w; U) x) {) ^
  8. } USART_InitTypeDef;
复制代码
) T) N7 q4 _2 B4 t2 O
USART_BaudRate:波特率设置。一般设置为 2400、9600、19200、115200。标准库函数会根据) U; z  {9 m3 S
设定值计算得到 USARTDIV 值,并设置 USART_BRR 寄存器值。8 |, \# [. J8 O3 E9 z

2 K& y: X- v2 `( b, LUSART_WordLength:数据帧字长,可选 8 位或 9 位。它设定 USART_CR1 寄存器的 M 位的值。) y6 e# F2 r, t' |$ H
如果没有使能奇偶校验控制,一般使用 8 数据位;如果使能了奇偶校验则一般设置为 9 数据位。% h  B0 N$ p2 H( o; {. n: U$ W
+ a( X: I# d# b6 t' }; {
USART_StopBits:停止位设置,可选 0.5 个、1 个、1.5 个和 2 个停止位,它设定 USART_CR2
. ~- g/ p7 g9 J. g寄存器的 STOP[1:0] 位的值,一般我们选择 1 个停止位。
% c" `* P' y# q5 `: S0 q  D$ e. s) D
5 b! l# h& X" F; HUSART_Parity:奇偶校验控制选择,可选 USART_Parity_No(无校验)、USART_Parity_Even(偶
0 @$ A2 r+ {# x% m0 b2 v* y校验) 以及 USART_Parity_Odd(奇校验),它设定 USART_CR1 寄存器的 PCE 位和 PS 位的值。
0 R  J* _4 i/ W: X6 D. W9 u* g% [2 k  @
USART_Mode:USART 模式选择,有 USART_Mode_Rx 和 USART_Mode_Tx,允许使用逻辑或
0 X4 {/ `) n6 h" m. [% c8 S运算选择两个,它设定 USART_CR1 寄存器的 RE 位和 TE 位。( Y- C3 u+ V6 g# p) c
! b+ O9 h3 r% h7 v  s( ]/ J
USART_HardwareFlowControl:硬件流控制选择,只有在硬件流控制模式才有效,可选有使能 RTS、使能 CTS、 同时使能 RTS 和 CTS、不使能硬件流。
4 P& E& c# P& M3 R9 m4 B3 C( t1 `
USART 时钟初始化结构体# y& g1 z% u8 s

7 B) _: J) N, l/ `+ b0 u: v! t
  1. typedef struct {
    . M+ X2 ]$ W3 C6 U; }. X: m# J
  2. uint16_t USART_Clock; // 时钟使能控制  |% a; x, M/ A( i
  3. uint16_t USART_CPOL; // 时钟极性3 y" D  w# R8 x" E/ @+ j4 D
  4. uint16_t USART_CPHA; // 时钟相位
    ' t( D$ p8 Y3 U/ f
  5. uint16_t USART_LastBit; // 最尾位时钟脉冲
    + l0 S% d0 i; q, p4 S
  6. } USART_ClockInitTypeDef;
复制代码

$ @, R5 g0 M( Z9 }/ [5 D9 E1) USART_Clock:同步模式下 SCLK 引脚上时钟输出使能控制,可选禁止时钟输出(USART_Clock_Disable) 或开启时钟输出 (USART_Clock_Enable);如果使用同步模式发送,一般都需要开启时钟。它设定 USART_CR2 寄存器的 CLKEN 位的值。7 Q9 R/ O( z# T& V- E

, W( ?! m; J# \( T/ j% m( {USART_CPOL:同步模式下 SCLK 引脚上输出时钟极性设置,可设置在空闲时 SCLK 引脚为低电平 (USART_CPOL_Low) 或高电平 (USART_CPOL_High)。它设定 USART_CR2 寄存器的 CPOL位的值。5 M) u; w2 T) _- t

. p  h* t0 M& L% G- d+ |USART_CPHA:同步模式下 SCLK 引脚上输出时钟相位设置,可设置在时钟第一个变化沿捕获数据 (USART_CPHA_1Edge) 或在时钟第二个变化沿捕获数据。它设定 USART_CR2 寄存器的CPHA 位的值。USART_CPHA 与 USART_CPOL 配合使用可以获得多种模式时钟关系。$ h% L+ Z; s7 g4 k

5 U3 L+ |% U6 C/ x) FUSART_LastBit:选择在发送最后一个数据位的时候时钟脉冲是否在 SCLK 引脚输出,可以是不输出脉冲 (USART_LastBit_Disable)、输出脉冲 (USART_LastBit_Enable)。它设定 USART_CR2 寄存器的 LBCL 位的值。
$ @1 b1 n: P; \3 F0 O& G& B9 ]& m( \/ t6 s" q8 T
. |) c: l1 M; i4 |% P
收藏 评论0 发布时间:2022-5-7 17:37

举报

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