FLASH编程的特性是只能从1变0,要想从0变1,只能整个sector擦除。
比如某个地址的一个32位的字,擦除以后是0xFFFFFFFF,第一次编程0xFFFF0000,然后第二次再编程0x00000000,结果应该是0x00000000。
之前的型号比如GD32F130,GD32F330,以及STM32都是支持这个特性的,试了下GD32E230好像不支持。
看了GD32E230手册,不支持编程非0xFFFF的地址。
PGERR Program error flag bit When programming to the flash while it is not 0xFFFF, this bit is set by hardware. The software can clear it by writing 1.