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

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

[复制链接]
STMCU小助手 发布时间:2021-12-2 14:44
需要用到的外设文件有:$ ^' L1 l* b; ^8 r, Q& Y
1 T; ]+ o* a" F+ g) \; D. o" Z
  1. stm32f2xx_usart.c; //串口相应函数5 N" c4 C1 {) y5 S1 F

  2. 8 Z7 L5 y2 f% @( h4 t
  3. stm32f2xx_gpio.c; //GPIO初始化
      N! m' W# _, Y: q6 d

  4. 2 @+ h" ]! C4 |! Y% R/ ~
  5. stm32f2xx_rcc.c; //时钟初始化$ r: I; T- |7 ?
  6.   D/ _% Q2 z0 U/ ]
  7. misc.c; //中断初始化
复制代码
( _5 `( \/ l" I$ [/ W' i
初始化主要包括8个部分。5 S; P% f, m' S7 T, Y* V
% C, G/ ~1 U3 `& ?+ Z
1、 使能GPIO时钟:! a4 }: h) m+ o# L7 d' M
9 C7 Q# l7 v' @' f
  1. RCC_AHB1PeriphClockCmd(GPIOX, ENABLE);
复制代码
  n& v0 i- x4 f/ M  B3 P7 I
2、 使能UART时钟:  o' w/ d& Z! d
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTX, ENABLE);
复制代码
; i/ d" V# j' q: t
3、 将GPIO引脚连接到USARTX:/ Z' z( N/ V7 C: S5 E

( ^. C+ K; X# l: `8 A# w原始函数:
  1. GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码

* A6 r* r3 G5 `6 U% A* cGPIO_AF可选如下:
# Y- d! B: C+ {
  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;
复制代码
( \' A6 g/ k, {3 a7 e1 p
连接TX:- Q# X2 K$ S8 n$ W+ H2 h) k# j
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码
, l$ H$ V" N* v" z# J3 p" I
连接RX:
: M+ m* v" ~1 Q6 \( F
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码
* j3 ]3 O$ B4 V1 m8 K
4、 配置GPIO的TX和RX:- U; b5 ~" T# I  K4 P6 M% q) L

) X- A4 M8 Q; @8 |1 VTX配置:
, h' u% F" v% Q* J/ P0 h. g3 x: x* V
  1. GPIO_OType = GPIO_OType_PP;2 h  X, t' E6 E

  2. & n9 N5 B& i9 t( F
  3. GPIO_PuPd = GPIO_PuPd_UP;5 V8 Z1 F( b0 B) u' i( h. Z4 F

  4. ; D/ T/ f& p3 a9 @% y$ {. j
  5. GPIO_Mode = GPIO_Mode_AF;6 H2 ~& I2 b4 P( {, L" \1 p% i0 B
  6. : ^8 J9 x1 K0 ~. s
  7. GPIO_Pin = GPIO_Pin_XX;
    ' B/ q4 Q) T! F5 _3 X9 P

  8. 7 O& {# ^3 M7 `2 d- Z: P
  9. GPIO_Speed = GPIO_Speed_50MHz;
    6 w/ k. S) E3 b( T( l. {
复制代码

) J: o! E' z* |: e6 oRX配置:8 [; o0 m$ ]: w- m; z7 f5 o* Y% D
  1. GPIO_Mode = GPIO_Mode_AF;/ u8 q7 O+ b; L8 n: Z
  2.   n4 u; [9 T0 L+ S' f
  3. GPIO_Pin = GPIO_Pin_XX;7 c2 w$ P# H* k; v$ |/ c. I( P
复制代码
, T/ w' j5 @* Z+ ?0 }
5、 串口初始化:& M- h+ m% g6 y: ~# s7 ^
  1. USART_InitStructure.USART_BaudRate = 115200;
    . b7 [; E2 L% `+ u7 o2 |$ s
  2. ; y4 u* F( X, i3 a
  3. USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    ! b) |$ s/ w3 m7 _; {
  4. 9 F8 y5 t* g/ I3 @
  5. USART_InitStructure.USART_StopBits = USART_StopBits_1;! ?2 Q0 A5 ^9 F8 T- M
  6. 1 o3 [: T1 u3 _2 ~: F: O
  7. USART_InitStructure.USART_Parity = USART_Parity_No;% N# r# W% a" O. Z3 G2 i
  8. 0 a6 m2 N4 ^& ~# \0 a
  9. USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    , o! b# C" t" X, K
  10. 1 j/ b3 c- {7 l. u1 H' l" |' S! I
  11. USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;4 t+ M/ J- x" i# c' Y$ ]
  12. : H2 e" w( K) Q: m
  13. USART_Init(USARTx, &USART_InitStructure);
复制代码
/ B$ e: G. z: c

2 F& Y& r* |& @5 o! j6 {这样的配置是从网上下来的,为什么串口还是无法发送数据??  ~! `3 h6 J0 |) [+ z! F# u

7 T9 O2 O  W" K$ j1 `3 G( {  [! l% \- O( x) Q
赞 收藏 评论0 发布时间:2021-12-2 14:44

举报

0个回答

所属标签

相似技术帖

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