让
STM32
的外部
SRAM
操作跟内部
SRAM
一样
前几天看到开源电子论坛
(openedv)
有人在问这个问题,我特意去做了这个
实验,这样用外部
SRAM
就跟用内部
SRAM
一样,不用自己去申请内存,也
不用考虑什么内存地址,一切让编译器自己去解决。废话不多说,我直接拿原
子哥的战舰开发板库函数版的外部
SRAM
实验来修改。在库函数的
system_stm32f10x.c
这个初始化文件当中其实就已经有外部
SRAM
的初始化,
我们只要增加
#define DATA_IN_ExtSRAM 1
这句宏定义
view sourceprint?1#if defined (STM32F10X_HD) || (defined STM32F10X_XL) ||
(defined STM32F10X_HD_VL)23#define DATA_IN_ExtSRAM 14#endif
再编译的
时候就会把外部
SRAM
的初始化编译进去,初始化的代码大家可以去看文件中
的
void
SystemInit_ExtMemCtl(void)
这个函数。然后我们在工程设置那里把外
部
SRAM
地址增加进去,如下图
修改启动文件中的中的第
39
行,把
__initial_sp
修改成
__initial_spEQU
0x20000000 + Stack_Size
然后我们把
Main
中的
testsram
中的地址去掉,让编译器自己去指定地址
再把原子哥的外部
SRAM
的初始化注释掉,因为前面已经在
System_init
已
经初始化了。其实这里我们可以把原子的
SRAM.c
文件去掉不用它了,我这里
没去掉,其实只是为了能正常调用
fsmc_sram_test()
来测试实验结果
到这里我们可以编译了,下载到开发板,我们就可以看到实验结果
tips:
感谢
大家的阅读,本文由我司收集整编。仅供参阅!