STM32 烧录程序后无法在内部FLASH保存数据问题解决

STM32 烧录程序后无法在内部FLASH保存数据问题解决

新接手一套代码,要求在Flash特定区域保存数据。硬件为STM32F030C6,有32k Flash。

原代码中已经将数据打包成一个结构体,并将结构体的地址固定在Flash中并将其中一个参数初始化,使用如下方法:

const Flash_Data FlashData __attribute__((at(0x8007C00))
{
	.softVer = 0x01010109;
};

Keil设置中已将Flash大小设置成28k(0x7000),且下载选项已设置成按扇区擦除(Erase Sector),但是发现每次下载代码后Flash中的数据总是被清除,只是单纯的重启板子数据就不会丢失。
使用keil debug发现地址0x8007C0后的FlashData的大小的数据全部为0,其余为0xFF。而Flash格式化后的每个字节应为0xFF,可知0x8007C00的数据不是下载的时候清除的,而是程序运行时清除的,使用这种方法时不能在代码里将FlashData初始化。
在后续的调试中还发现,不能使用const修饰,这样下载之后也会将整个结构体初始化为0。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值