IAR 环境下 STM32 堆栈的外部 S RAM 的实现
--基于 STM32F103ZET6 将堆栈放在外部 SRAM 的实现
一、为什么要实现
正常情况下,当使用外部 SRAM 来存放大量数据时,我们需要先来定义一个 SRAM 的地址,然后再
往地址内填入相应的数据即可。但直接定义的变量如:int I;char c;unsigned char arry[1024];等是只能存放
在堆栈中而不能直接存放在外部 SRAM 当中,当直接定义的变量过多时,就会有堆栈溢出的风险。为了
方便我们编写程序,我们需要将直接定义的变量默认的存放在外部的 SRAM 中,这就需要将堆栈放在外
部 SRAM 中去。
二、硬件条件
CPU 为 STM32F103ZET6,该微控制器有内置 512KB 的 Flash 及 64KB 的 RAM。
外部 SRAM 为容量为 512K*8Bit,有 19 根地址线,8 根数据线,WE、RE、CS 信号线各一根,器件连
接到 STM32 的 FSMC 总线上。
三、了解 STM32 的启动过程
一般情况下,我们不论是写设备驱动还是应用程序都是从 main 函数开始为出发点,起始在 main 函
数开始之前,STM32 还需要经过一个启动过程,它就像一个 BootLoader 程序一样,初始化硬件、堆栈,
关联各个中断函数入口地址等等。这个启动过程一般情况下是不需要我们不需要去弄懂它,因为不影
响我们正常编写代码。但我们要将堆栈放在外部 SRAM 就需要了解这个启动过程,因为初始化外部堆栈
就是在这个过程里边来完成。STM32F103ZET6 内置 Flash 代码分布结构大致如图 3-1。
- 1
- 2
前往页