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

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

[复制链接]
北国牧马 提问时间:2018-3-27 10:25 /
如图所示。地址0x6200位置处,已经写入了0x00000002,能否再次在地址0x6200处再次写入另外一个数据,例如0x00000003.求教各位大神指点如何操作。我在测试时发现如果第一次写入的是0x00,可以再次写入别的数据,如果写入非0数,就不能再次写入了。
flash存储.png
收藏 评论13 发布时间:2018-3-27 10:25

举报

13个回答
bargagebaobei 回答时间:2018-3-27 10:26:11
本帖最后由 bargagebaobei 于 2018-3-27 10:27 编辑

貌似不可以 只能弄出来 然后擦除 在和后续数据一起再写进去

评分

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

查看全部评分

北国牧马 回答时间:2018-3-27 10:28:49
bargagebaobei 发表于 2018-3-27 10:26
貌似不可以 只能弄出来 然后擦除 在和后续数据一起再写进去

嗯,flash擦除次数只有10K,想着尽可能少擦除,不然用不了几次就废了
bargagebaobei 回答时间:2018-3-27 10:29:41
10K足够用啦
zhao.zhao 回答时间:2018-3-27 10:39:33
先读出这个扇区的所有数据放在数组中,然后在数组中把你要写入的数据写到相应的位置,再次擦除该扇区,再把数组中的内容写入扇区,这样又可保存扇区中原来的内容,同时也写入的自己的数据。

评分

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

查看全部评分

流水源 回答时间:2018-3-27 10:39:52
flash不是只能把位1写成0,0要变回1只能擦除嘛。擦除之后flash都是FF,写入时就是把FF中的某个bit位1变成0。

评分

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

查看全部评分

北国牧马 回答时间:2018-3-27 10:41:07
流水源 发表于 2018-3-27 10:39
flash不是只能把位1写成0,0要变回1只能擦除嘛。擦除之后flash都是FF,写入时就是把FF中的某个bit位1变成0 ...

可能编译器在线调试时取反了吧
北国牧马 回答时间:2018-3-27 10:42:17
zhao.zhao 发表于 2018-3-27 10:39
先读出这个扇区的所有数据放在数组中,然后在数组中把你要写入的数据写到相应的位置,再次擦除该扇区,再把 ...

嗯  目前看只有这一种办法了
す疯Ⅱ恒す 回答时间:2018-3-27 11:00:09
是对位操作的,如果flash里改位是1,那可以把其改为0,如果是0,那只能擦除了。可以用位做计数用,节约擦除次数。

评分

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

查看全部评分

北国牧马 回答时间:2018-3-27 11:25:12
す疯Ⅱ恒す 发表于 2018-3-27 11:00
是对位操作的,如果flash里改位是1,那可以把其改为0,如果是0,那只能擦除了。可以用位做计数用,节约擦除 ...

用位做计数用?如果将flash的写入看作位操作,加入某已经写入的32位数据0x00000003,是不是再次写入0x00000001是可以的,但实际测试是不行的
12下一页

所属标签

相似问题

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