|
新手学STMF4xx,参考STM32F429I-Discovery开发板V1.0.1示例FMC_SDRAM使用汇编编写SDRAM驱动,调试2天最终发现示例一处问题,如不仔细看源码,很可能会误导和我一样的新手…… L% @; z! w: U; _5 @7 u6 i ; q( {. {& E5 c3 E" N/ s 示例: 源文件:stm32f429i_discovery_sdram.c 错误:void SDRAM_GPIOConfig(void)% c6 g$ `% f6 x0 z; U. } 对比下文两处红色字体所示内容。 /*-- GPIOs Configuration -----------------------------------------------------*/) V3 Y' ?: k4 O /*) I; o5 M" l. [3 S+ j +-------------------+--------------------+--------------------+--------------------+ + SDRAM pins assignment +$ Z7 v* p, P% k3 W8 e* v +-------------------+--------------------+--------------------+--------------------+5 q3 }* n# C: a7 w3 Y | PD0 <-> FMC_D2 | PE0 <-> FMC_NBL0 | PF0 <-> FMC_A0 | PG0 <-> FMC_A10 | | PD1 <-> FMC_D3 | PE1 <-> FMC_NBL1 | PF1 <-> FMC_A1 | PG1 <-> FMC_A11 | | 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 | | PD15 <-> FMC_D1 | PE11 <-> FMC_D8 | PF11 <-> FMC_NRAS | 8 j% A" z* `! W W5 K +-------------------| PE12 <-> FMC_D9 | PF12 <-> FMC_A6 | |4 s' h4 e4 x. [6 w# l | PE13 <-> FMC_D10 | PF13 <-> FMC_A7 | % y" J9 c* c1 P, z& w* A4 E4 O | PE14 <-> FMC_D11 | PF14 <-> FMC_A8 |+ @/ P& m' W& E. | | PE15 <-> FMC_D12 | PF15 <-> FMC_A9 | +-------------------+--------------------+--------------------+- Q' Y# \4 d7 j4 k | PB5 <-> FMC_SDCKE1| | PB6 <-> FMC_SDNE1 | | PC0 <-> FMC_SDNWE |9 ~: I: f. I" T% z +-------------------+ % M0 w ~9 O+ I * x- F i2 }$ t3 s) e/ H */+ {' Z/ c1 U( p: v9 p2 N 。。。。。。 /* GPIOG configuration */ GPIO_PinAFConfig(GPIOG, GPIO_PinSource0 , GPIO_AF_FMC);8 m4 u8 F" k0 v0 y1 f6 A0 d GPIO_PinAFConfig(GPIOG, GPIO_PinSource1 , GPIO_AF_FMC);- s3 b1 p& r$ g! K GPIO_PinAFConfig(GPIOG, GPIO_PinSource4 , GPIO_AF_FMC);* |7 e- ^' T4 H; n- v GPIO_PinAFConfig(GPIOG, GPIO_PinSource5 , GPIO_AF_FMC);3 h5 [; {' k6 v$ F, B; n( C: q! G GPIO_PinAFConfig(GPIOG, GPIO_PinSource8 , GPIO_AF_FMC); GPIO_PinAFConfig(GPIOG, GPIO_PinSource15 , GPIO_AF_FMC);7 q* O' G% L: {0 `( ~ " H7 z2 E! Z( I+ g2 C/ P 更正: ; +-------------------+--------------------+--------------------+--------------------+5 h* ]! @) `9 \, i ; + SDRAM pins assignment +3 C% v! g Q, r) `$ F$ ~+ ^4 j ; +-------------------+--------------------+--------------------+--------------------+0 ~2 ^# r! Y! P7 x1 I* q ; | PD0 <-> FMC_D2 | PE0 <-> FMC_NBL0 | PF0 <-> FMC_A0 | PG0 <-> FMC_A10 | ; | PD1 <-> FMC_D3 | PE1 <-> FMC_NBL1 | PF1 <-> FMC_A1 | PG1 <-> FMC_A11 |6 ^( d5 [) o$ ~% ~1 A ; | PD8 <-> FMC_D13 | PE7 <-> FMC_D4 | PF2 <-> FMC_A2 | PG4 <-> FMC_BA0 |% H5 v' P/ g! G& i( U+ T' A ; | PD9 <-> FMC_D14 | PE8 <-> FMC_D5 | PF3 <-> FMC_A3 | PG5 <-> FMC_BA1 | ; | PD10 <-> FMC_D15 | PE9 <-> FMC_D6 | PF4 <-> FMC_A4 | PG8 <-> FMC_SDCLK |4 u% l7 ]# g' ?& g ; | PD14 <-> FMC_D0 | PE10 <-> FMC_D7 | PF5 <-> FMC_A5 | PG15 <-> FMC_NCAS | ; | PD15 <-> FMC_D1 | PE11 <-> FMC_D8 | PF11 <-> FMC_NRAS |--------------------+ ; +-------------------| PE12 <-> FMC_D9 | PF12 <-> FMC_A6 | ; | PE13 <-> FMC_D10 | PF13 <-> FMC_A7 | ; | PE14 <-> FMC_D11 | PF14 <-> FMC_A8 |$ s: o$ y/ d6 C% A; X5 [5 j" ^) O ; | PE15 <-> FMC_D12 | PF15 <-> FMC_A9 | ; +-------------------+--------------------+--------------------++ I# Q. [$ Y: q( G8 F ; | PB5 <-> FMC_SDCKE1| - J5 U4 ]3 k# F) s F& o; U) W J2 D ; | PB6 <-> FMC_SDNE1 | & ~& ?+ c# b9 z3 ~) r ; | PC0 <-> FMC_SDNWE |7 w0 w$ @" f! W) k ; +-------------------+ $ t5 Q9 T; z, _ |
| 赞个,其他童鞋验证下? |
| 这个还照搬? |
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版