STM32系列外部SRAM使用详解
STM32系列处理器在面临内部SRAM资源不足时,通常会考虑使用外部SRAM来扩展存储空间。外部SRAM的使用涉及到系统配置、初始化、内存管理等多个方面。本文将详细介绍如何在STM32中启用和利用外部SRAM,以及解决过程中可能遇到的问题。 外部SRAM的使用可以通过 Flexible Static Memory Controller (FSMC) 来实现。FSMC是STM32系列微控制器中用于访问外部存储器的接口,它可以支持不同类型的外部设备,包括SRAM和NOR型闪存。在STM32F103ZE这样的硬件平台上,当内部64KB SRAM不够用时,可以通过连接1MB的外部SRAM来扩展。 启用外部SRAM通常需要以下步骤: 1. **工程配置**:在IDE中,需要配置系统文件`system_stm32f10x.c`,确保其中的FSMC初始化函数被启用,以配置相应的IO口和时序参数,使能对外部SRAM的访问。 2. **内存分配**:在工程设置中,分配外部SRAM的空间,注意区分内部和外部SRAM,确保编译器知道如何正确地分配变量和数据段。 3. **代码调整**:可以使用`attribute`关键字来指定变量存储在外部SRAM中,或者让编译器自动处理内存分配。如果选择后者,需要注意编译器可能会根据需要自动将数据段移动到外部SRAM。 在实际操作中,可能会遇到以下问题: 1. 当仅依赖编译器自动分配时,可能会发现大部分变量和数据段仍然存储在内部SRAM,只有未初始化的`.bss`段分配到外部SRAM。这是因为编译器优先考虑内部SRAM,只有当内部空间不足时才会将数据移到外部。 2. 如果试图完全不使用内部SRAM,只使用外部SRAM,可能遇到程序无法正常运行的情况。这可能是由于栈的设置问题。在STM32的启动文件(如`startup_stm32f10x_hd.s`)中,初始栈指针`__initial_sp`通常指向内部SRAM的高地址。如果改为指向外部SRAM,需要确保启动文件和工程配置匹配,否则可能导致程序运行异常,如硬件故障。 解决这类问题时,可以通过JLink等调试工具进行单步调试,观察程序执行流程,找出故障点。例如,在`SystemInit()`函数中检查FSMC初始化是否成功,以及在`SetSysClockTo72()`函数退出时检查是否存在硬件故障。 使用STM32外部SRAM涉及系统初始化、内存分配、编译器行为理解及启动文件的调整。在实践中,我们需要对分散加载文件、内存映射有深入理解,并通过调试工具定位和解决问题。确保外部SRAM的正确使用,能够充分利用硬件资源,满足复杂应用的需求。
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/10544479/bg1.jpg)
![](https://csdnimg.cn/release/download_crawler_static/10544479/bg2.jpg)
剩余9页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/843da914e1694672bea3bc4fd2293cd1_u013434651.jpg!1)
- 粉丝: 8
- 资源: 9
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)