我想在Flash同一个位置写两次。
比如在0x8010000,第一次写0xFFFFFFFF,第二次写0x7FFFFFFF,第三次写0x4FFFFFFF。
根据Flash原理,bit 1可以单独放电编程0,bit 0不能单独充电变成1。理论上上述操作是可行的。
可实际在第2次写就遇到FLASH_ERROR_WRP的问题。
难道STM32的Flash在Programming之前必须先Erase吗?不可以对同一个位置直接重复写吗?
FLASH_UnlockBank1();
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
FLASH_ProgramWord(addr, data);
FLASH_LockBank1();
|