探讨 STM32F4 系列单片机 ROM 大扇区怎么存储用户数据问题

看完这个扇区地址分布内心是崩溃的,因为之前用的F1都是2KB一个扇区,每个扇区存储一个结构体,假如程序里用到5个结构体,只需要占用5个扇区即可。

现在扇区最小16KB,如果将前面几个扇区作为用户存储数据区域,不可避免就得要用BootLoader了,写这个玩意要不是为了升级,真的非常没有必要,那有没有

什么巧妙的方法可以不用BootLoader就能将用户数据存储在扇区1位置呢?

答案是定义一个const变量,大小16KB,用at指定地址0x8004000,我现在遇到一个问题就是定义const的变量必须初始化,我不可能写16KB的0xFF吧,不知道大家是怎么

解决这个问题的?

const u8 flash_map[16 * 1024] __attribute__((at(0x08004000)))={};

当定义好flash_map后,就可以放心的擦写该扇区,存储用户的数据了。

这个方法有2个缺点: 生成的程序较大, 每次下载固件之后之前存储的数据都丢失了.

至于如何利用16KB存储多个结构体,这个问题也不难解决。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值