你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

经验分享 | 基于STM32CubeIDE的指定存储话题

[复制链接]
STMCU小助手 发布时间:2025-11-17 09:54

意法半导体公司【简称ST】为STM32用户提供了免费的编译工具软件STM32CubeIDE,时不时有人咨询基于该环境下的指定存储话题,这里专门聊聊该内容,重点介绍如何实现针对变量、函数、文件、常量的指定存储的实现方法,以供参考。

一、指定变量的RAM存放地址

先修改STM32CubeIDE的相关连接文件如下:【后面都会用到下面配置】

image.png

在链接文件中增加section: image.png

image.png

或者这样也行: image.png

image.png

当然,对于变量的指定存储,不调整链接文件,直接给定地址借助指针的方式也是可以的。比方像下面这样,不过要注意你指定使用的内存空间是安全的,别跟其它堆栈区冲突了。

image.png

二、指定函数的存放地址

下面尝试将名为MX_I2C1_INIT()的函数存放在指定位置。

image.png

image.png

image.png

三、指定文件的存放地址

下面尝试将名为adc.c和gpio.c的目标文件存放在指定位置。

image.png

image.png

四、指定常量的存放地址

image.png

image.png

当然,如果在section那里再指定地址的做法也可以:

image.png

看到这里,有人或许好奇链接脚本中的keep关键字,如果不要会怎么样呢?

这里使用 <span>KEEP</span> 关键字的主要目的是确保特定的段[section]在链接过程中不会被丢弃。即使这些段没有被显式引用,因为<span>KEEP</span> 关键字的存在而被强制保留段定义。换句话说,如果这些段没有在代码中被引用或使用,且在链接脚本中未加 <span>KEEP</span> ,那么相应的段将会在链接过程中被丢弃。

我们不妨验证下。基于上面的配置,将keep拿掉,同时代码中对定义的常量不做任何引用或使用。我们可以发现定义的常量段被丢弃了,即没有在预定的地址为其安排存储空间。

image.png

最后提醒下,我们做段定义时有时可能会遇到地址不合适的问题,我们可以适当调整地址数据,不要跟默认栈空间冲突了。还有,自定义段在链接脚本中的位置有时会涉及到有效性问题,具体设计时可以灵活调整段定义在脚本文件中的前后位置。

OK,今天的分享就到这里,下次再聊~!

文章出处:茶话MCU

收藏 评论0 发布时间:2025-11-17 09:54

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版