所以擦除后我不能直接写入内部闪存。 如果在写操作之前没有擦除操作,那么我可以。 任何想法为什么?
编程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文档对此无话可说。
以上就是c/c++开发分享擦除后无法写入闪存相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/560134.html