微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32在MDK中使用外部RAM浅解

STM32在MDK中使用外部RAM浅解

时间:11-10 来源:互联网 点击:
使用简介:

开发板 神舟王STM32F207开发板

问题描述:

在使用emwin的时候由于占用的变量较多,出现了STM32F207内部RAM不够用的尴尬局面,开发板自带了4M的外部SRAM,因此考虑速度和存储的平衡,使用芯片内部RAM作为堆栈区使用,外部RAM则用来存储其他变量

修改内容:

启动文件即startup_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

之后就可以尝试定义一个大数组试试了


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top