所以我不能在擦除后直接写入内部闪存。如果写操作之前没有擦除操作,那么我可以。有什么想法吗?
编程函数返回“成功写入”值,但查看内存时,没有写入任何数据。这是代码:
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_PageErase() 时设置的 FLASH->CR 寄存器中的 PER 位在调用结束时并未清除。在闪存仍处于解锁状态时清除该位允许此后在闪存上运行其他操作。
STM文档对此没有任何说明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)