擦除后无法写入闪存

所以擦除后我不能直接写入内部闪存。 如果在写操作之前没有擦除操作,那么我可以。 任何想法为什么?

编程function返回“成功写入”值,但在查看内存时,不会写入任何数据。 这是代码:

uint32_t pageAddress = 0x08008000; uint16_t buffer = 0xAAAA; HAL_FLASH_Unlock(); FLASH_PageErase(pageAddress); HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, pageAddress, buffer); HAL_FLASH_Lock(); 

我已经尝试在擦除和编程之间锁定内存,在这些操作之间造成延迟,这无济于事。

问题是FLASH-> CR寄存器中的PER位在调用FLASH_PageErase()时设置,在其结束时不会被清除。 在闪存仍然未锁定时清除此位允许在此之后运行闪存上的其他操作。

STM文档对此无话可说。