STM32在MDK中使用外部RAM淺解
開發(fā)板 神舟王STM32F207開發(fā)板
問題描述:
在使用emwin的時候由于占用的變量較多,出現(xiàn)了STM32F207內(nèi)部RAM不夠用的尷尬局面,開發(fā)板自帶了4M的外部SRAM,因此考慮速度和存儲的平衡,使用芯片內(nèi)部RAM作為堆棧區(qū)使用,外部RAM則用來存儲其他變量修改內(nèi)容:
啟動文件即startup_stm32f2xx.s文件
1.添加標志量:DATA_IN_ExtSRAM EQU 1 ;主要是方便控制切換使用內(nèi)部和外部RAM
2.修改棧區(qū):IF DATA_IN_ExtSRAM == 1
__initial_sp EQU 0x20000000 + Stack_Size
ELSE
__initial_sp
ENDIF
3.在進入main函數(shù)之前初始化外部RAM
有兩種初始化方式
第一種:在SystemInit內(nèi)初始化
SystemInit函數(shù)位于system_stm32f2xx.c文件內(nèi)
定義宏變量DATA_IN_ExtSRAM
這樣系統(tǒng)初始化時就會調(diào)用函數(shù)SystemInit_ExtMemCtl
修改SystemInit_ExtMemCtl函數(shù)內(nèi)容,即初始化FSMC RAM
第二種
在startup_stm32f2xx.s內(nèi) 調(diào)用main函數(shù)前先調(diào)用RAM初始化函數(shù)完成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
之后就可以嘗試定義一個大數(shù)組試試了
評論