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

【经验分享】STM32F2系列之USART学习

[复制链接]
STMCU小助手 发布时间:2021-12-2 14:44
需要用到的外设文件有:( S3 E& J* [/ E: z+ o# @5 B2 e
2 b8 D" |( @* E% W
  1. stm32f2xx_usart.c; //串口相应函数
    7 b: l4 a, U7 [+ A

  2. 9 v0 H( v) |' ]2 W
  3. stm32f2xx_gpio.c; //GPIO初始化
    . H) L7 T' X4 L
  4. 4 T/ F- t. x6 d5 O- O
  5. stm32f2xx_rcc.c; //时钟初始化
    0 r8 i0 U( _5 n( T, ]

  6. # \4 J) N2 K+ p3 L' h
  7. misc.c; //中断初始化
复制代码

8 T, p- j+ s: F9 b& @- P% b  [初始化主要包括8个部分。
( l  k2 o& d( r6 I- X% u, `3 T5 s/ z8 [8 n2 ^& \
1、 使能GPIO时钟:4 }- U5 Z: a" |3 q

  R. N+ C8 o2 a7 U
  1. RCC_AHB1PeriphClockCmd(GPIOX, ENABLE);
复制代码
2 r1 k8 D# p$ E  a/ d: O
2、 使能UART时钟:/ ?9 l- T0 _2 O# Z' L' \# p
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTX, ENABLE);
复制代码
/ _2 k/ `6 h4 B5 w/ U! j; B
3、 将GPIO引脚连接到USARTX:2 K) o- `' V5 e$ Z
9 ~/ ]' D+ X( k
原始函数:
  1. GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码
( @. q0 o5 F; |) q
GPIO_AF可选如下:
5 O' N# R0 y  W. \: e
  1. GPIO_AF_RTC_50Hz;GPIO_AF_MCO;GPIO_AF_TAMPER;GPIO_AF_SWJ;GPIO_AF_TRACE;GPIO_AF_TIM1;GPIO_AF_TIM2;GPIO_AF_TIM3;GPIO_AF_TIM4;GPIO_AF_TIM5;GPIO_AF_TIM8;GPIO_AF_TIM9;GPIO_AF_TIM10;GPIO_AF_TIM11;GPIO_AF_I2C1;GPIO_AF_I2C2;GPIO_AF_I2C3;GPIO_AF_SPI1;GPIO_AF_SPI2;GPIO_AF_SPI3;GPIO_AF_USART1;GPIO_AF_USART2;GPIO_AF_USART3;GPIO_AF_UART4;GPIO_AF_UART5;GPIO_AF_USART6;GPIO_AF_CAN1;GPIO_AF_CAN2;GPIO_AF_TIM12;GPIO_AF_TIM13;GPIO_AF_TIM14;GPIO_AF_OTG1_FS;GPIO_AF_OTG2_HS;GPIO_AF_ETH;GPIO_AF_FSMC;GPIO_AF_OTG2_FS;GPIO_AF_SDIO;GPIO_AF_DCMI;GPIO_AF_EVENTOUT;
复制代码
  |: Y) z. q: \5 E+ Y
连接TX:
& D  x" w3 X+ p1 R; W* g& {
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码
* H$ Z! _) ~5 D( x' _4 _( O* d
连接RX:
3 O; ~& i4 y/ ^0 `6 h. ^4 X+ ]
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码

) |; e+ N1 c6 b6 B- C" T  G: T2 B4、 配置GPIO的TX和RX:
8 J" a; G3 u- Q! Q- K* o/ t
1 @& Y3 v. T7 u6 E& Y4 GTX配置:# P4 I& @* J7 c) H+ l0 d5 g# ~
  1. GPIO_OType = GPIO_OType_PP;
    4 ?1 f0 _0 n8 o9 a

  2. 0 o0 u  @+ g& P- H+ _' K( e3 o
  3. GPIO_PuPd = GPIO_PuPd_UP;
    " T, q' L$ G0 O( ~# I, x) A  e* B0 g

  4. , b1 h1 ~) G. h/ I2 j2 H
  5. GPIO_Mode = GPIO_Mode_AF;
    & M) j! ]+ Y: ]: E& l* a

  6. ' T; r+ H& e- `& l8 @5 v+ ^# j
  7. GPIO_Pin = GPIO_Pin_XX;
    . s# N# x7 T5 l- Z
  8. : d/ C5 x, I+ S5 u- h1 G" h
  9. GPIO_Speed = GPIO_Speed_50MHz;# ]- |  I& f+ d% \( V7 b1 e( W
复制代码
) y" ^1 d4 C- |+ }6 b
RX配置:
2 @; B' W$ k- W+ B6 P; D
  1. GPIO_Mode = GPIO_Mode_AF;' \4 a2 N5 n& W
  2. ' t4 n5 n9 U1 u; r$ q; p6 h
  3. GPIO_Pin = GPIO_Pin_XX;
    $ B  ~- Z5 f5 m, q4 T
复制代码

0 d( h1 X; `6 f' `/ W5、 串口初始化:% f3 j2 M: X/ {+ D
  1. USART_InitStructure.USART_BaudRate = 115200;
    : A* |- F9 {% y% ?7 @

  2. 9 M# o) E: b$ B2 e4 F% D( h: S
  3. USART_InitStructure.USART_WordLength = USART_WordLength_8b;0 @$ G) @% C/ T; H5 n5 L( o

  4. - O% r, H' o# I  r( p' ?' ]# Z
  5. USART_InitStructure.USART_StopBits = USART_StopBits_1;
    # i5 s9 ]+ S. G2 R

  6. : e0 z$ R! E8 Z& y
  7. USART_InitStructure.USART_Parity = USART_Parity_No;
    4 c5 ]  a7 y+ b: p
  8. ; b7 Q! J5 E* @! u3 d+ N
  9. USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;8 D7 w1 z& ~! J  K4 U$ M4 ], p3 |

  10. / ~3 C( I! w. R. ~5 v- N/ {
  11. USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    . K. W8 l9 {( Q1 m

  12. * @# F; m4 W  j' _; N* M0 m- V9 i
  13. USART_Init(USARTx, &USART_InitStructure);
复制代码

4 ?  N, A. l  i- p+ S
% K6 \& ^& u" G/ r  K6 Q这样的配置是从网上下来的,为什么串口还是无法发送数据??! n# I# b2 `( N! E( `
/ c5 A# J* v8 o% [) r# u3 U

# _! R/ o! c3 J: v8 a* n
赞 收藏 评论0 发布时间:2021-12-2 14:44

举报

0个回答

所属标签

相似技术帖

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