
新手学STMF4xx,参考STM32F429I-Discovery开发板V1.0.1示例FMC_SDRAM使用汇编编写SDRAM驱动,调试2天最终发现示例一处问题,如不仔细看源码,很可能会误导和我一样的新手…… % ^$ ]# Y4 a4 F) ]5 v, \: w1 u5 k 示例:1 }2 B! k$ A; z- w1 I( u 源文件:stm32f429i_discovery_sdram.c 错误:void SDRAM_GPIOConfig(void) 对比下文两处红色字体所示内容。% w( Y% E! ]! |$ r$ j( d7 N /*-- GPIOs Configuration -----------------------------------------------------*/% K% Y, a; i2 d. T+ K# G! z /* +-------------------+--------------------+--------------------+--------------------+, l6 V. k1 b- c" f) Z + SDRAM pins assignment +' G4 g. C7 D( S# k! } +-------------------+--------------------+--------------------+--------------------+ | PD0 <-> FMC_D2 | PE0 <-> FMC_NBL0 | PF0 <-> FMC_A0 | PG0 <-> FMC_A10 | | PD1 <-> FMC_D3 | PE1 <-> FMC_NBL1 | PF1 <-> FMC_A1 | PG1 <-> FMC_A11 |3 v/ z `& L) f+ I& Y0 ]+ }& B | PD8 <-> FMC_D13 | PE7 <-> FMC_D4 | PF2 <-> FMC_A2 | PG8 <-> FMC_SDCLK | | PD9 <-> FMC_D14 | PE8 <-> FMC_D5 | PF3 <-> FMC_A3 | PG15 <-> FMC_NCAS | | PD10 <-> FMC_D15 | PE9 <-> FMC_D6 | PF4 <-> FMC_A4 |--------------------+ | PD14 <-> FMC_D0 | PE10 <-> FMC_D7 | PF5 <-> FMC_A5 | . h- u! E' }& k6 n( A4 T2 q/ O/ M7 s | PD15 <-> FMC_D1 | PE11 <-> FMC_D8 | PF11 <-> FMC_NRAS | 3 |( ^' k# s! V3 m8 [ +-------------------| PE12 <-> FMC_D9 | PF12 <-> FMC_A6 | | PE13 <-> FMC_D10 | PF13 <-> FMC_A7 | | PE14 <-> FMC_D11 | PF14 <-> FMC_A8 | | PE15 <-> FMC_D12 | PF15 <-> FMC_A9 | +-------------------+--------------------+--------------------+8 J( h$ R. S; D, [) H. i | PB5 <-> FMC_SDCKE1| | PB6 <-> FMC_SDNE1 | 7 p1 L. W4 B( X1 U& b" j | PC0 <-> FMC_SDNWE |. G- P7 [% E. a4 ^+ @. U" l +-------------------+ */8 ?- ^; f7 E3 M1 ?/ D) N 。。。。。。 w* b8 B/ G, |9 E" H" ~ /* GPIOG configuration */ GPIO_PinAFConfig(GPIOG, GPIO_PinSource0 , GPIO_AF_FMC);9 `. _1 S$ Q! A+ z% T5 W GPIO_PinAFConfig(GPIOG, GPIO_PinSource1 , GPIO_AF_FMC); GPIO_PinAFConfig(GPIOG, GPIO_PinSource4 , GPIO_AF_FMC);# g% K% P! d% b, p9 K. }6 t GPIO_PinAFConfig(GPIOG, GPIO_PinSource5 , GPIO_AF_FMC);( e: N% e3 r$ g- I GPIO_PinAFConfig(GPIOG, GPIO_PinSource8 , GPIO_AF_FMC);$ q: Y8 @5 z9 J GPIO_PinAFConfig(GPIOG, GPIO_PinSource15 , GPIO_AF_FMC);) P& v2 E, K7 X2 x3 O, i. } 0 Y: A) D5 F! r - `* [. z+ t n$ s9 h: Q6 I- l! W 更正:6 w' D' ^) X7 B* D! R' W. h1 @ ; +-------------------+--------------------+--------------------+--------------------+9 h; `; _# w# j+ A; ? ; + SDRAM pins assignment +7 _& _, m* c w8 M ; +-------------------+--------------------+--------------------+--------------------+ ; | PD0 <-> FMC_D2 | PE0 <-> FMC_NBL0 | PF0 <-> FMC_A0 | PG0 <-> FMC_A10 | ; | PD1 <-> FMC_D3 | PE1 <-> FMC_NBL1 | PF1 <-> FMC_A1 | PG1 <-> FMC_A11 |2 ]% w" R/ c' V+ {4 L ; | PD8 <-> FMC_D13 | PE7 <-> FMC_D4 | PF2 <-> FMC_A2 | PG4 <-> FMC_BA0 |- M5 m% E9 }0 I2 R+ V ; | PD9 <-> FMC_D14 | PE8 <-> FMC_D5 | PF3 <-> FMC_A3 | PG5 <-> FMC_BA1 | ; | PD10 <-> FMC_D15 | PE9 <-> FMC_D6 | PF4 <-> FMC_A4 | PG8 <-> FMC_SDCLK |7 g/ {1 F9 q, h5 k8 t. U B7 o ; | PD14 <-> FMC_D0 | PE10 <-> FMC_D7 | PF5 <-> FMC_A5 | PG15 <-> FMC_NCAS | 0 v4 O# Q: Q# b a1 T5 V& v0 a ; | PD15 <-> FMC_D1 | PE11 <-> FMC_D8 | PF11 <-> FMC_NRAS |--------------------+ 5 N. q" P/ Y) A, N; {& ^5 C& ` ; +-------------------| PE12 <-> FMC_D9 | PF12 <-> FMC_A6 | 9 d& m$ v( ?& | ; | PE13 <-> FMC_D10 | PF13 <-> FMC_A7 | 2 ~* W# K& ~) Q4 ~1 Z! | ; | PE14 <-> FMC_D11 | PF14 <-> FMC_A8 | ; | PE15 <-> FMC_D12 | PF15 <-> FMC_A9 |, @* P, T7 w, x5 s ; +-------------------+--------------------+--------------------+ ; | PB5 <-> FMC_SDCKE1| t( @2 M0 s' l. u1 J) X. \+ Y ; | PB6 <-> FMC_SDNE1 | # G3 Q' v& c% r/ C4 T% M ; | PC0 <-> FMC_SDNWE | ; +-------------------+ " e: T0 e0 |. R: a. q |
赞个,其他童鞋验证下? |
这个还照搬? |