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

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

[复制链接]
STMCU小助手 发布时间:2021-12-2 14:44
需要用到的外设文件有:+ C& b  B* d6 E& I- Z

9 f4 o- q6 c1 U8 K: ?9 A* c' b
  1. stm32f2xx_usart.c; //串口相应函数: p0 Z& ?8 _3 I

  2. " y+ G7 w* O0 [( k+ b9 [$ d* U+ C
  3. stm32f2xx_gpio.c; //GPIO初始化
    / G; W2 \; Q8 _+ d: T/ S6 v3 F$ K

  4. : T& N, `3 D; Y* N) d2 x
  5. stm32f2xx_rcc.c; //时钟初始化$ F9 y: I7 @2 a( U+ E6 _3 L

  6. / f8 D& i6 V. D$ t3 p" I
  7. misc.c; //中断初始化
复制代码
% P5 K+ H/ x$ u+ N6 T3 I5 i
初始化主要包括8个部分。
$ a9 x7 A: d- ]9 N) S' t7 j+ A, D3 o  X% l& y
1、 使能GPIO时钟:
# [4 B4 K. R+ N$ ^: q# Q; M6 W( G/ q
  1. RCC_AHB1PeriphClockCmd(GPIOX, ENABLE);
复制代码
2 I/ [; a  s  S7 a3 `3 T( Q5 [
2、 使能UART时钟:
4 w1 ^( J6 E7 A6 O/ X9 c# H
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTX, ENABLE);
复制代码
- R; h  i9 E2 k$ y
3、 将GPIO引脚连接到USARTX:
; D$ S. q0 Z) R2 C2 I6 ?; X) ?% C! K- n" b. j+ H' E. A
原始函数:
  1. GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码

/ @5 U- c: G9 d! m+ T' S- NGPIO_AF可选如下:
  M* |  T" ^; r9 Y
  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;
复制代码
# [" U! B2 p% e! C# z2 S/ Z
连接TX:1 h. L$ f& n/ ^0 J; U' Z2 G. _. N+ C
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码

; Y2 T) v0 ~, x& F6 Z% ~* h) z连接RX:
" L* o5 e* U  `2 U
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码
) L5 H. b$ b  J( d7 n( ^9 A
4、 配置GPIO的TX和RX:! _- [; H5 p1 E

; n) i  k( \$ V, f  I2 yTX配置:/ ]$ G% A) d8 T  {& a8 A8 U# [9 y4 u
  1. GPIO_OType = GPIO_OType_PP;3 C  \* ~2 }7 M( \) e

  2. , _+ a* Z) l8 Y; p; C- Q7 O
  3. GPIO_PuPd = GPIO_PuPd_UP;+ u2 ?4 M+ k& p/ q8 L
  4. , N0 J1 _& t* k% x$ Z: H% O# x
  5. GPIO_Mode = GPIO_Mode_AF;
    ; w% \) ~$ z. E& U$ d
  6. ; ^0 o' T# }" z* Z" h. p
  7. GPIO_Pin = GPIO_Pin_XX;
    . P) C2 M( w; R

  8. , S8 S9 Q- H1 F, J
  9. GPIO_Speed = GPIO_Speed_50MHz;
    ' C3 T( X3 u6 _2 L
复制代码

2 n  ], L7 m0 A% z+ K. U- `) E4 HRX配置:
% o/ p" s9 B+ g! Q8 C- a* s
  1. GPIO_Mode = GPIO_Mode_AF;
    6 Y/ L+ O6 t! X7 S
  2. ; [4 V& v/ z9 F" V  f* n
  3. GPIO_Pin = GPIO_Pin_XX;# G1 W/ h% Y/ C8 h* {8 M  }( C
复制代码
7 }: ]; g* y6 [" W* O- y* u6 _
5、 串口初始化:' e; U& k4 Z0 v& k
  1. USART_InitStructure.USART_BaudRate = 115200;
      b2 N& }  Y( M: w) n1 _2 S
  2. ; C) F3 E' N- M/ j9 I  b
  3. USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    - Q4 P6 Q! d+ e- f8 {- t

  4. , C& n& }! C" L
  5. USART_InitStructure.USART_StopBits = USART_StopBits_1;$ F3 |' l+ g' F, h) Y

  6. + b% A) b  }+ p
  7. USART_InitStructure.USART_Parity = USART_Parity_No;
    8 _/ h, P9 V+ P8 ?: p3 B

  8. 5 d7 T  Y' Z, V+ i, r* r* B
  9. USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;$ j; U2 _0 A" I0 M: R

  10. 1 A. Q6 e% z8 {% D' _+ {4 C
  11. USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;2 C7 R# s8 R' @& k& a. A

  12. 0 L' o7 H+ z: D0 ^# A2 x
  13. USART_Init(USARTx, &USART_InitStructure);
复制代码
0 V+ Z# d- J7 B' }4 s/ b3 l
3 j8 \) T3 O, C; F3 C* t
这样的配置是从网上下来的,为什么串口还是无法发送数据??
/ S- E1 x% \. b/ s, n5 C
  I$ _; B, e. @* J1 Z( b# m1 R" m% P6 Z7 u; J/ Q0 [
收藏 评论0 发布时间:2021-12-2 14:44

举报

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