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

STM32F407的flash读写问题

[复制链接]
Smile666 提问时间:2025-6-24 08:32 / 未解决

目前flash模拟EEPROM是参考的官方的flash读写代码,但C语言中attribute ((at())绝对定位的应用

网上的一段代码如下

1、定位到flash中,一般用于固化的信息,如出厂设置的参数,上位机配置的参数,ID卡的ID号,flash标记等等。

1 const u16 gFlashDefValue[512] attribute((at(0x0800F000))) = {0x1111,0x1111,0x1111,0x0111,0x0111,0x0111};//定位在flash中,其他flash补充为00 2 const u16 gflashdataattribute((at(0x0800F000))) = 0xFFFF;

请问这种可以直接写flash,但官方代码写flash先要解锁。

请问这种操作可以不?

1750725125852.jpg

谢谢!

收藏 评论1 发布时间:2025-6-24 08:32

举报

1个回答
xmshao 回答时间:3 小时前
1、通过Flash编程接口动态写入Flash




运行程序时通过STM32的Flash控制器API(如HAL库的HAL_FLASH_Program)对Flash特定地址进行擦写操作。
需要先解锁Flash写保护,执行擦除(通常是页擦除),然后写入数据,最后重新上锁。
这是对Flash存储器的实时地动态修改,可以在程序运行过程中改变Flash内容。


这个做法灵活,适合支持多次写入和更新Flash内容的场合,相对操作复杂些。




2、通过定义const变量编译时写入Flash


这个做法是在程序编译链接时将数据写入Flash,程序运行时为只读。
可视为静态存储。


这个操作简单方便,无需运行时进行Flash操作。适合存储固定数据,
如查表数据、固件版本号、常量配置等。


一般来讲,这类数据不可在程序运行时更新,往往需要重新编译和烧录才能改变数据。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版