keil指定变量存储在外部SRAM

前言

本文介绍在keil工程中如何将程序中的变量定义在外部SRAM。

1.修改keil工程选项

(1)点击“魔法棒”:

在这里插入图片描述

(2)点击“Linker”选项卡:

在这里插入图片描述

(3)取消勾选“Use Memory Layout from Target Dialog”:

在这里插入图片描述

(4)添加之前keil工程生成的.sct(分散加载文件)到“Scatter File”:

在这里插入图片描述

2.修改分散加载文件

(1)在图下标红框位置填入以下内容:

在这里插入图片描述
这部分内容的解释为:
在这里插入图片描述
1:加载域名,map文件中会用该名称来标识空间
2:加载域基地址,也就是SRAM的起始地址
3:SRAM的最大容量,单位Byte
4:输入节区样式,也就是扩展SRAM节区的名字,ANY(xxx)表示节区名为xxx

(2)定义变量到外部SRAM:

在变量后面加上如下后缀即可:

__attribute__ ((section ("EXSRAM")))

如果需要初始化变量,可以这么写:

static rt_uint8_t rt_heap[RT_HEAP_SIZE] __attribute__ ((section ("EXSRAM"))) = {0};

3.验证

打开keil工程编译生成的.map文件:
在这里插入图片描述
可以看到我们定义的变量已经定义到了外部SRAM。

4 写在最后

在MCU启动文件的__main中会调用分散加载代码,初始化我们定义的变量,如果变量没有赋初值则全部设置成0,否则设置成设定值,随后初始化库,调用main函数。因此,我们必须在__main之前完成对外部SRAM的初始化,修改启动文件如下(图中红框处为新增部分,FSMC_SRAM_Init即为外部SRAM初始化函数名):
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光飞逝的日子

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值