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

stm32 USART3 映射方式2

[复制链接]
pentral0311 发布时间:2013-5-23 11:04
  在网上搜了一下,有这方面的提问(
8 M' s; n3 Y3 T0 A* j
& x6 V0 s8 ]$ i2 x: J2010-7-5 16:11:34 有提到过 一下为原帖  文字 " u, m! u; R" ]/ S2 _) j# }  U1 ^
USART3映射方式2(映射到PD8,PD9)时,要先开启AFIO功能,再初始化相关外设后,USART才有效。
- @( c$ [3 I; u8 n( J0 j6 A
+ l' R4 `5 M' B* b6 M% S     以下代码是正确的:& t0 ^6 I  F, n$ q% J

: L# o. L9 i) K% c     u32 backRcc = RCC->APB2ENR & (RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO);//read status of rcc_gpiob & rcc_afio
% L5 i# R! c( B: l1 }            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO,ENABLE);
; W# F' ~% v# r% D' |. b" `, S% s+ |! ?            $ _, x" y" d- {8 [$ L+ s
            GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE);7 c' c# H- T2 o5 z* h0 u! S
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
9 l6 P7 r3 H/ ]" ?- S0 ?; p            /* Configure USART3 Tx (PD.8) as alternate function push-pull */+ x- ~- B1 h# D5 z3 G
            GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8;
7 I' O2 T4 Z: W; F: U            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;6 x6 Z1 Y" M' g. O
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
, M0 G* V' B1 I            GPIO_Init(GPIOD, &GPIO_InitStructure);
  m% G/ T' D, J( V  G( p& p& R6 ?            
& o  h7 `$ F( s$ {6 h# d6 c            /* Configure USART3 Rx (PD.9) as input Up */6 e1 w: X/ @+ @, w& c" h
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;! [4 K; U, [  g- g9 ^& A' P
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
2 V, U, V1 P: P8 y/ f            GPIO_Init(GPIOD, &GPIO_InitStructure);
; A+ n  _% }6 i0 l. m" ~            ) W; L; ~) I) i9 p
            if(!backRcc)
* ]$ P7 H' `7 @9 Y2 X% I            {
. w. X6 A$ u+ E3 u/ B                RCC->APB2ENR &= ~backRcc; //restore * X1 b7 k& t8 v, E0 ?( @  p
            }) w2 g6 ^8 w9 ~* U' s9 [# z
) E# c& y) C* f% _- w& ~0 e+ b
   初始化USART等。。。
9 B) b# Z0 r  R  k: K
1 j2 U& e3 L; R: V* h   若去掉  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO,ENABLE);
" \% V8 o9 C! p( l5 L9 v, i5 `, A; {$ y( {
   不正常! 
- j% L- o3 \% _  b2 a8 z1 v- E8 k) `1 J

& P8 e9 G. ^, n
% \! l+ J. _: o; }1 f根据上述还是没有解决这个问题 (其他口的重映射验证都是OK的),所以又开了一下此贴,希望得到大家的帮助 ,本人代码如下
  n& _: d+ X0 h* h& G1 P1 J/ ]2 D//重映射成功的 方式1
4 g# r7 \* \( G. U, {! i1 C# K$ A#ifdef        DEFINE_UART_MAP_PORT_3    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO , ENABLE);
# z( d# [5 Z* V' J2 h/ Y        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
& ~5 m+ A4 ^7 `" H. d0 W2 H( P  H4 c" w# S- q+ v
        GPIO_PinRemapConfig(GPIO_PartialRemap_USART3 ,ENABLE);        //        GPIO_FullRemap_USART3  ]( L3 A9 |8 v9 }8 X7 e+ l# |
          /* Configure USART3 Tx (PC10) as alternate function push-pull */" y$ K; O6 u2 k3 W
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;7 w1 r! \1 N# u  D2 o5 c
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;2 v8 ?) e2 W3 v5 w8 t9 k
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;( W# g+ W1 v! G$ R5 e2 r# a
          GPIO_Init(GPIOC, &GPIO_InitStructure);
# I8 O& |/ ?* n$ v6 |% e5 p2 L* p6 B7 E3 d. h
          /* Configure USART3 Rx (PC11) as input floating */( i  ^  t( f7 G+ B. f4 i- A4 x/ ~
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;6 ?1 `8 Z4 ?8 I0 G( u" `
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
/ T* r9 _; w& s; K, m: m) M7 S  p$ Q          GPIO_Init(GPIOC, &GPIO_InitStructure);" V* [. ?2 S, a9 O/ X' k
#endif 
5 H  y6 w, b& H: \$ T2 p& O0 L* N2 Q# Y" t4 z7 V
3 q6 L1 ?) \& v7 U) o5 |
//方式2 重映射失败, B: B) `/ y8 p2 K
3 E) d& {: D( j8 y
#ifdef DEFINE_UART_MAP_39 F' T' w! O# L5 _( C

) D9 {1 F4 F  m. \) U9 @) `1 f8 l! M4 w+ R5 U/ ]
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO,ENABLE);
& G% |- T! _% p# o& w* R1 Y$ K
) t) B9 T" v& M7 r! H. {/ F        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3 , ENABLE);) a+ \0 a0 i" J& _/ _

% O+ z. u: \9 u0 H0 ^. O/ B2 F! k/ f& W. N. w
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO , ENABLE);
6 J, f. d$ O; }2 g5 x6 w+ Q        GPIO_PinRemapConfig(GPIO_FullRemap_USART3 ,ENABLE);        //        GPIO_FullRemap_USART3
2 w! ?, A1 {( u' W% i7 `8 v7 L, {
4 p) f4 m5 |$ ^' V0 q$ _$ j' H          /* Configure USART3 Tx (PD9) as alternate function push-pull */
+ P4 t. O+ Q& k4 \# K" c          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
: [5 \% [, z1 j6 s  b! y          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
9 @5 q9 N( d9 l8 J! L1 h1 f          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
2 a3 j! w  E6 w6 G( q          GPIO_Init(GPIOD, &GPIO_InitStructure);4 s3 \3 @+ |1 k9 n+ i
5 I$ J3 M5 u4 ]) ?
          /* Configure USART3 Rx (PD8) as input floating */! J0 p, P6 U) N1 B
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
4 h% h6 e# `# q: N          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;3 U! {: o$ I3 q( m
          GPIO_Init(GPIOD, &GPIO_InitStructure);
8 p* M9 [3 s* u# p7 {- G
, U/ p* ^% ^9 Q) {( i#endif, d3 Y8 e0 ]' q" `  ?

/ s3 |& O! d$ ^  [附图为keil寄存器值
usart.JPG
收藏 评论4 发布时间:2013-5-23 11:04

举报

4个回答
somethinglqbz 回答时间:2013-5-27 20:50:04

RE:stm32 USART3 映射方式2

学习一下
chunlei233 回答时间:2013-5-28 10:46:42

RE:stm32 USART3 映射方式2

本人菜鸟一个 啥都不懂
ccbbcc 回答时间:2013-5-28 14:18:05

RE:stm32 USART3 映射方式2

赚积分。。。。。。。。。。。。。。
pentral0311 回答时间:2015-1-8 17:55:15
此贴发了将近一年了,主要是当时LCD使用了FSMC这个功能,刚好和这个引脚是冲突的,所以UART失败了,具体在官网中对这个有做说明

所属标签

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