STM32H743一个扇区128K,扇区中间地址写数据,地址前后的数据内容不变,有什么好的方法?
扇区128K,写数据要擦除整个扇区,扇区的其他数据页被擦除掉了,怎么不改变扇区其他地址的数据不变 不变的放在一个扇区,变化的放在另外一个扇区? 扇区的地址不是固定的嘛 扇区的其他数据页被擦除 擦除完了再复制回来 指定位置写入也是可以的,但是容易误擦到有效数据的 在STM32H743微控制器中,Flash存储器的扇区大小为128KB。如果你需要在扇区中间的某个地址写入数据,同时保持该地址前后的数据内容不变,可以使用Flash编程库 STM32提供了HAL库和LL库,可以方便地进行Flash编程操作。你可以使用这些库来实现数据的写入和擦除操作 使用双缓冲区也是可以支持的 如果你不想擦除整个扇区,可以使用双缓冲区的方法,将数据写入RAM中的缓冲区,然后再将缓冲区数据写回Flash 读取目标扇区数据到缓冲区:将目标扇区的数据读取到RAM中的缓冲区。修改缓冲区数据:在缓冲区中修改目标地址的数据。写回Flash:将缓冲区的数据写回Flash 方法一通过擦除整个扇区并恢复数据,适用于对Flash操作要求较高的场景 建议通过双缓冲区的方式,避免了频繁的擦除操作,适用于对Flash寿命要求较高的场景。根据具体需求选择合适的方法即可 那你就擦除指定地址数据呗,这就好了啊 这种操作意义何在?我觉得不如把数据放在后面,前面的放程序比较好哦 写数据要擦除整个扇区,扇区的其他数据页被擦除掉了,怎么不改变扇区其他地址的数据 扇区的其他数据页被擦除掉了 STM32的闪存写操作确实要整扇区擦除,这个没办法绕过,建议把整个扇区的数据先读出来,改完再整体写回去。 你可以用外部的EEPROM或者FRAM存储小块数据,这样就不用担心扇区擦除的问题了。 如果只是改一小部分数据,可以用STM32的备份寄存器或者SRAM加电池备份的方式,省得改闪存。
页:
[1]
2