首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FSMC使用之外扩RAM的妙用(3)

FSMC使用之外扩RAM的妙用(3)

  LDR R0,= 0x00001011 ;选择存储类型SRAM,地址数据不复用,总线宽度16位,写使能,并启动存储器块
本文引用地址:http://www.eepw.com.cn/article/182411.htm  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 选上。
继承事业,薪火相传
返回列表