新闻中心

EEPW首页>嵌入式系统>设计应用> STM32在MDK中使用外部RAM浅解

STM32在MDK中使用外部RAM浅解

作者: 时间:2016-11-10 来源:网络 收藏
使用简介:
开发板 神舟王 STM32F207开发板
问题描述:
在使用emwin的时候由于占用的变量较多,出现了STM32F207内部RAM不够用的尴尬局面,开发板自带了4M的外部SRAM,因此考虑速度和存储的平衡,使用芯片内部RAM作为堆栈区使用,外部RAM则用来存储其他变量
修改内容:
启动文件即sta rtup_stm32f2xx.s文件
1.添加标志量:DATA_IN_ExtSRAM EQU 1 ;主要是方便控制切换使用内部和外部RAM
2.修改栈区:IF DATA_IN_ExtSRAM == 1
__initial_sp EQU 0x20000000 + Stack_Size
ELSE
__initial_sp
ENDIF
3.在进入main函数之前初始化外部RAM
有两种初始化方式
第一种:在SystemInit内初始化
SystemInit函数位于system_stm32f2xx.c文件内
定义宏变量DATA_IN_ExtSRAM
这样系统初始化时就会调用函数SystemInit_ExtMemCtl
修改SystemInit_ExtMemCtl函数内容,即初始化FSMC RAM
第二种
在startup_stm32f2xx.s内 调用main函数前先调用RAM初始化函数完成RAM的初始化
IMPORT __main
IMPORT SystemInit
IMPORT SRAM_Init
LDR R0, =SystemInit
BLX R0
LDR R0, =SRAM_Init
BLX R0
LDR R0, =__main
BX R0
ENDP
当然还有最蛋疼的一种方式就是在startup_stm32f2xx.s初始化外部RAM 不过需要修改成汇编语言
最后就是修改 MDK的配置 在option->target勾选上外部RAM
之后就可以尝试定义一个大数组试试了



关键词:STM32MDK外部RA

评论


技术专区

关闭