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

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

[复制链接]
STMCU小助手 发布时间:2021-12-2 14:44
需要用到的外设文件有:; b) U' h5 [5 l0 S3 a" r3 ~. L' O
* [+ k8 p+ w3 S7 d2 o& u. M6 V
  1. stm32f2xx_usart.c; //串口相应函数
    , a' c' ]  `  Y( F9 X' d9 Z
  2. + N8 p# b* D- ]4 H( A4 D$ e2 r
  3. stm32f2xx_gpio.c; //GPIO初始化6 t7 r3 Y9 p1 x& O/ ^2 a

  4. ' b/ v! h, m1 E9 i! J
  5. stm32f2xx_rcc.c; //时钟初始化
    * s3 y6 c( x, ~; f+ Q- X. P8 L: B
  6. ( Y; j1 h1 \  ~  O, b
  7. misc.c; //中断初始化
复制代码

8 W% O# r* \2 t* i初始化主要包括8个部分。
/ ^- r% k/ n( g  l6 r) n  `
/ B$ U& l+ _9 s% j4 }1、 使能GPIO时钟:
' B  ?) K$ b+ Q5 j& L
0 M# s" F8 g) z5 z# A
  1. RCC_AHB1PeriphClockCmd(GPIOX, ENABLE);
复制代码

8 w! M3 n) I% u' l2、 使能UART时钟:
; r* _! ?& }8 r  P( g5 A# _
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTX, ENABLE);
复制代码
" {2 y# W+ P) p! g$ H
3、 将GPIO引脚连接到USARTX:  L6 ?" Y" q8 ~) e( x# m( M
( y4 K$ V" _0 J6 m: T3 ^
原始函数:
  1. GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码
0 M* J/ R3 i( k6 ?: i$ [
GPIO_AF可选如下:
$ o3 f' q: p7 ?8 j
  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;
复制代码

% V7 y: O$ _# f* l' h/ y% N连接TX:4 W3 X# |% g- O, U3 s* Z) T6 Y
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码
7 t6 w* \$ ~( D3 @: p' F4 i- q
连接RX:
8 v, `* R9 J) E- w1 c. C
  1. GPIO_PinAFConfig(GPIOX, GPIO_PinSourceY, GPIO_AF);
复制代码

0 O6 `) E9 c8 Y$ @' X' G4、 配置GPIO的TX和RX:
1 K% N" u, L' d; ]5 H4 Q, D: \5 Y& z$ {0 d; F
TX配置:
( P9 E* S/ S3 s, Q! r
  1. GPIO_OType = GPIO_OType_PP;
    ) D' v! `6 {* B* C" i! ]
  2. % U4 V( d' E0 h: s7 q  W4 T3 V, o
  3. GPIO_PuPd = GPIO_PuPd_UP;
    ; J* i0 f9 l8 S! a

  4. + L" i' U/ G$ v8 `. p7 g. \
  5. GPIO_Mode = GPIO_Mode_AF;7 c" z8 s1 e4 E

  6. 2 h6 P& v8 z" q+ N% e
  7. GPIO_Pin = GPIO_Pin_XX;5 \+ b9 L! ]  B+ w9 B
  8. 0 P. V8 [6 S" e3 k
  9. GPIO_Speed = GPIO_Speed_50MHz;
    6 q% B9 f+ O2 S7 R
复制代码

- i: P9 z* H6 d5 f+ @) m/ r  iRX配置:
  ]* i/ f0 B, _; M% k7 |+ {% ?
  1. GPIO_Mode = GPIO_Mode_AF;! Y7 w& l2 U$ I( i# k

  2. ! R% X" y. M% U* }
  3. GPIO_Pin = GPIO_Pin_XX;. ~# F  w, y4 B5 g" z6 a+ a1 {
复制代码
  ~0 b$ j) Z! v
5、 串口初始化:
  Z9 o* G( v1 z8 l  `0 x. A7 q
  1. USART_InitStructure.USART_BaudRate = 115200;
    # U/ x7 \% E$ t3 o# z: g
  2. 9 ?% U7 Y9 j) r4 B
  3. USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    9 F4 y0 C, _: w6 C1 o3 J
  4. : |3 {2 g/ C8 B
  5. USART_InitStructure.USART_StopBits = USART_StopBits_1;8 M* `+ |$ U: w  D3 }1 w  Q
  6. 3 E) [  w# E1 m$ h* Z
  7. USART_InitStructure.USART_Parity = USART_Parity_No;
    + ^( K2 I- L9 \# v1 s! C. k
  8. 9 f. {' x0 }/ B! b
  9. USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;8 M1 \8 J5 Q, e* Q) v6 T
  10. ( g* b' h5 {4 D; Y" g- i/ W
  11. USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    - i7 P. t1 Q0 u$ U; Z

  12. * k- v; ]1 F! D( s$ u. Q* M  Y2 c
  13. USART_Init(USARTx, &USART_InitStructure);
复制代码
1 h; g% m1 b; G2 T' u, W1 `5 H
& L, h# l9 o$ o3 v0 d: F0 A3 E
这样的配置是从网上下来的,为什么串口还是无法发送数据??
/ V$ ~; W2 j2 O5 C) e/ }# ?% |
4 z( Q% N. m9 K+ K3 X! y9 K9 Q+ R& V) w0 ?$ j% O7 Y  Y9 m
收藏 评论0 发布时间:2021-12-2 14:44

举报

0个回答

所属标签

相似技术帖

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