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

stm32 USART3 映射方式2

[复制链接]
pentral0311 发布时间:2013-5-23 11:04
  在网上搜了一下,有这方面的提问(
! ^  D# Y# K0 d& z% ]
4 A5 x6 {8 E. Q% q& J7 ?' l2010-7-5 16:11:34 有提到过 一下为原帖  文字 
7 J2 L/ _: r# b% b5 \. A+ aUSART3映射方式2(映射到PD8,PD9)时,要先开启AFIO功能,再初始化相关外设后,USART才有效。) m/ l% m8 B% k; l/ c9 S

/ l( d" j9 M+ ]" R" b     以下代码是正确的:
" N7 }/ K  t( b' E( q" }1 \$ Q& g' i7 x  w
     u32 backRcc = RCC->APB2ENR & (RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO);//read status of rcc_gpiob & rcc_afio$ Q2 T% X% O6 j) U1 E7 J
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO,ENABLE);
7 ^3 G8 S9 g9 t. r1 X            
9 K* g: Y: G  i5 N! z  `+ s1 p            GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE);
7 X0 _6 r2 I, H; h6 r" r            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
7 L$ ^  \* T0 x. R! q% J5 J4 ?            /* Configure USART3 Tx (PD.8) as alternate function push-pull */! m! I' S. }: t3 l
            GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8;
: r6 n$ W8 _1 Q+ j+ I            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;* F$ G% _6 A- o1 I) c
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;3 ]2 N5 X/ s" f7 C1 p
            GPIO_Init(GPIOD, &GPIO_InitStructure);- k/ P4 K' i" o( `  Z
            
3 t8 J: s3 k0 t7 X3 J            /* Configure USART3 Rx (PD.9) as input Up */
6 a: x0 m1 v4 k4 n8 \& N- s& f            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
3 x- z; l! k5 }$ G; u1 h2 a            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;5 }) K, t0 W0 Q6 t1 ?* [, \
            GPIO_Init(GPIOD, &GPIO_InitStructure);
& D+ x$ v) b4 Y! d$ O$ D9 {            
- E- j# |: b; U2 Y# b- g, D            if(!backRcc)' V6 p) D  w0 P: s9 u
            {
! c% P1 K0 ]& W# P- H6 E                RCC->APB2ENR &= ~backRcc; //restore 
$ v% r4 v4 a# T            }/ H6 T$ p4 j$ H* b5 c: h
# @" |2 R7 L4 {/ q- b
   初始化USART等。。。5 J4 {" M5 o9 _8 W

# w9 t, K8 M! l, ?! C7 Z   若去掉  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO,ENABLE);1 f+ [1 E/ n$ i# [0 o& X
+ g1 z; u, |8 |# x6 `
   不正常! + n  r3 X) T/ f2 ]: x* ?
8 f1 S2 _# |" J; X$ }

/ y& m( A- n4 A  v1 D2 A3 C
6 f  D; k: n- s. V/ t" f  f% d+ X根据上述还是没有解决这个问题 (其他口的重映射验证都是OK的),所以又开了一下此贴,希望得到大家的帮助 ,本人代码如下
" K$ `( f* j+ |4 K9 k5 q3 x//重映射成功的 方式1
. ~' l! }- K( ?3 K) P/ `" h; K' Y#ifdef        DEFINE_UART_MAP_PORT_3    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO , ENABLE);
  x; M% a$ k3 m7 v9 y7 C1 p        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
  O. a$ r9 s' S; H' H, B5 N# l& h8 i. o/ A
        GPIO_PinRemapConfig(GPIO_PartialRemap_USART3 ,ENABLE);        //        GPIO_FullRemap_USART32 @8 r  R- P/ h7 G% L1 m0 ~; V1 h
          /* Configure USART3 Tx (PC10) as alternate function push-pull */: h1 C8 I2 @% f/ `/ H" Z
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
+ \% T: ~9 n' z. }          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;. G. M1 ~+ ^! o* O6 r$ A
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  n' h+ p( u6 N/ j0 d! d          GPIO_Init(GPIOC, &GPIO_InitStructure);
( Q' G9 P/ y2 J
0 f9 k1 j4 n: ^# m) Z+ Y: J          /* Configure USART3 Rx (PC11) as input floating */
' f$ F; G( X7 @          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  N5 c6 N( r# J# J8 {  ]5 ]/ R          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
3 [8 g6 a# v# A5 P2 b% j          GPIO_Init(GPIOC, &GPIO_InitStructure);
- z5 s$ @  J: Z- ^#endif . T) i2 |" N2 M' k9 j4 X/ S5 s

9 j" B5 I) s! j7 N( F; O7 P8 s/ x0 x5 j8 w
//方式2 重映射失败! ]% z: r9 N+ ]8 o5 D
& ]) [/ v0 ?+ i6 c- l+ e
#ifdef DEFINE_UART_MAP_3) y4 U' Q* G( r  D6 Y7 {
# Y- Q; U" R* z8 R9 E

9 J% R: O; x4 e. [6 q% o$ P: v7 Y        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO,ENABLE);
9 k9 Q. E5 P- r6 X; o) k  L& r4 V! L3 _
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3 , ENABLE);
8 I8 ?# n( D2 i* \& ^
& C& T) G: G: I, ^7 C& g) z7 j
4 \" d# Y# ?1 o    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO , ENABLE);0 q! `: i- v; l0 b" _5 w% L
        GPIO_PinRemapConfig(GPIO_FullRemap_USART3 ,ENABLE);        //        GPIO_FullRemap_USART3
  P! O! Z5 q  j# T0 a4 F9 s0 J; a. o' f$ E1 b2 M9 U9 p
          /* Configure USART3 Tx (PD9) as alternate function push-pull */3 j5 s6 A5 N7 d! N1 `, T* H* J
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
) q) A/ k% j" E/ X3 Z          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
) P3 L" Y6 j5 [' Q          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
' {' ~! B+ o5 L# N7 Q9 {          GPIO_Init(GPIOD, &GPIO_InitStructure);
; z; X# p7 l: h8 ]
$ F( a: M2 V/ f9 r( d          /* Configure USART3 Rx (PD8) as input floating */0 {3 d* \2 j, R2 U
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
4 `$ k& v' b' }( x" G4 ^* f          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;& V5 [& J* b8 ]" p: Y) `) E
          GPIO_Init(GPIOD, &GPIO_InitStructure);# A- x  [* A3 u  [$ A/ g

1 h1 A2 m* e: H4 r#endif
; y+ ^/ {/ R0 T7 }" t, m# k  t% U. O% j/ V3 H+ ^; J7 u8 U
附图为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 手机版