stm32在内存中定义未初始化的数据(GCC)

有时候需要将变量定位到闪存或者其他一些非易失性存储器中,这些变量在启动时不应该初始化,在这种情况下,可以创建一个特定的内存区域在ld文件,使用noload 指令。

网上有很多类似的教程,但是我当只定义一个段在SDRAM中时,固件的大小也会增加,显然这是不符合要求的。

我在tureSTUDIO用户使用文档中的一个文档找到了解决方案。
1.更新一个段在MEMORY

MY_DATA (rx) : ORIGIN = 0x08010000,LENGTH = 64K

2.添加一个段使用未加载指令

.my_data (NOLOAD)
{
	*(.MY_Data*);
} >MY_DATA

3.最后程序中声明变量时,添加段属性

__attribute__((section(".MY_Data.a"))) int Distance
__attribute__((section(".MY_Data.a"))) int Second
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值