百为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中间的内容是会执行的。
|