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

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

谢谢!

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

举报

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




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


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




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


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


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


一般来讲,这类数据不适合在程序运行时更新,往往需要重新编译和烧录才能改变数据。
Smile666 回答时间:3 天前

xmshao 发表于 2025-6-24 10:05
1、通过Flash编程接口动态写入Flash</p>
<p>

理解 谢谢您的解答

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