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

flash某位置已经写好数据,能否不用擦除继续覆盖写入数据

[复制链接]
北国牧马 提问时间:2018-3-27 10:25 /
阅读主题, 点击返回1楼
收藏 评论13 发布时间:2018-3-27 10:25
13个回答
Angel_YY 回答时间:2018-3-27 16:06:22
STM32的Flash写入不是按位写入的,而是按照半字或者字写入的,也就是两个字节或者四个字节,一个字节一个字节的写入都不可以,更不要说是1个比特了。如果Flash中已经有了数据,想只改变部分数据,只能通过读取Flash中的数据保存在RAM中,修改RAM中的数据后擦除整页的Flash然后把RAM中的数据按照半字或者字进行写入。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

北国牧马 回答时间:2018-3-27 16:59:25
Angel_YY 发表于 2018-3-27 16:06
STM32的Flash写入不是按位写入的,而是按照半字或者字写入的,也就是两个字节或者四个字节,一个字节一个字 ...

嗯嗯 好 只能这么干了
ldskendy 回答时间:2018-3-28 12:26:30
1.STM的一些芯片FLASH擦除后是0,而不是0xFF,具休看datasheet.
2.STM的一些芯片(测试过F407)支持位写入,即如果擦除后为0xFF,则可分几次将位置0,但不能置1.例如可以按顺序写入以下数据:0xFE  0xFC  0xF8  0xF0  0x70  0x30  0x10 0x00,如第一次就写入0x00,那后续不能改成其他数据了。如果擦除后分别写入0xF0  0x0F  则结果是0x00;
3.STM的一些芯片只支持字节写入,即写入第一次后不能更改了,除非擦除。
ldskendy 回答时间:2018-3-28 12:28:33
北国牧马 发表于 2018-3-27 11:25
用位做计数用?如果将flash的写入看作位操作,加入某已经写入的32位数据0x00000003,是不是再次写入0x000 ...

要看具体DATASHEET,
1.一些型号的FLASH擦除状态是0x00的,支持0->1,不支持1->0。
2.一些型号支持位操作,一些型号不支持位操作。
12

所属标签

相似问题

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