| 
 
| 百为STM32开发板教程之十三——外扩SRAM使用步骤(用3.5固件库) 
 1、在工程选项里定义外部SRAM的起始地址和容量大小,百为STM3210E-EVAL的外部SRAM起始地址是0x68000000(FSMC_NE3),容量大小是0x100000(1M)
 
  2013-6-1 08:41 上传 下载附件 (97.14 KB)
 
 
 
 
 2、开启宏定义DATA_IN_ExtSRAM
 
 在启动代码startup_stm32f10x_hd.s里有如下几行代码,其中会调用SystemInit这个函数,
 IMPORT  __main
 IMPORT  SystemInit
 LDR     R0, =SystemInit
 BLX     R0
 LDR     R0, =__main
 BX      R0
 
 SystemInit这个函数在system_stm32f10x.c里定义,这个函数又包含如下几行代码
 #if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
 #ifdef DATA_IN_ExtSRAM
 SystemInit_ExtMemCtl();
 #endif /* DATA_IN_ExtSRAM */
 #endif
 
 这里就是重点了,SystemInit_ExtMemCtl() 就是初始化FSMC接口外部SRAM的代码
 也就是说只要在系统启动的时候调用这个函数,启动完后就能用外部SRAM了
 但这里有个#ifdef DATA_IN_ExtSRAM,所以我们要定义这个宏:
 #if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
 #define DATA_IN_ExtSRAM
 #endif
 
 其中#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)这行代码,
 在工程设置里是有定义了的STM32F10X_HD的,所以上面#if和#endif中间的内容是会执行的。
 
   | 
 |