FSMC使用之外扩RAM的妙用

  作者:liklon 时间:2013-10-23来源:电子产品世界

  LDR R0,= 0x00001011 ;选择存储类型SRAM,地址数据不复用,总线宽度16位,写使能,并启动存储器块

  LDR R1,= 0xA0000010

  STR R0,[R1] ;对控制寄存器配置完成

  LDR R0,= 0x00000200 ;根据外部SRAM芯片的时序配置时序寄存器

  LDR R1,= 0xA0000014

  STR R0,[R1] ;时序寄存器配置结束

  有了对FSMC的配置代码,最后一步就是修改STM32的启动文件以及编译软件的设置,具体如何操作咱继续往后看。

  启动文件与编译软件配置

  最后一步就是对启动文件进行修改以及对编译软件进行配置。现在需要把片内的RAM全部作为栈来使用,所以在启动文件中要完成栈顶地址的设置以及长度的设置。并在启动文件中完成对FSMC的配置。

  DATA_IN_ExtSRAM EQU 1 ;方便以后修改所用

  Stack_Size EQU 0x00000400 ;定义栈的大小

  AREA STACK, NOINIT, READWRITE, ALIGN=3

  Stack_Mem SPACE Stack_Size

  IF DATA_IN_ExtSRAM == 1 ;重点从这里开始

  __initial_sp EQU 0X20000000 + Stack_Size ;设置栈顶地址,STM32是向下生长 ;的所以这么设置

  ELSE

  __initial_sp

  ENDIF

  第一处修改完成,主要完成了对栈顶的设置。下面开始第二处:

  Reset_Handler PROC

  EXPORT Reset_Handler [WEAK]

  IF DATA_IN_ExtSRAM == 1 ;方便以后修改

  ;此处添加上面对FSMC配置的代码

  ENDIF ;修改结束

  IMPORT __main

  IMPORT SystemInit

  LDR R0, =SystemInit

  BLX R0

  LDR R0, =__main

  BX R0

  ENDP

  第二处修改完成,主要是加入了对FSMC配置的代码。到此启动代码的修改部分就结束了,下面对编译软件进行设置。在设置之前我们回头看看第一部分对FSMC的介绍,可以看出现在RAM的首地址为0x68000000,因为我们是通过Bank1的第三区控制的所以首地址是0x68000000。了解了这个我们就开始设置编译软件:

  到此为止所有工作都完工了,可以给UCGUI的存储设备分配70K字节的空间都毫无压力。最后提醒一点,记得将Use MicroLIB 选上。

1 2

关键词: STM32 FSMC RAM

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版