[应用相关] FLASH操作问题,STM32G071的flash擦除

[复制链接]
 楼主| lalallalala 发表于 2022-2-28 23:34 | 显示全部楼层 |阅读模式
我每次进在线时 如果把全片擦除勾选 进在线后程序里可以完成一次写flash但是之后程序例再有写flash就没有反应了
如果不勾选全片擦除 一次写flash都无法完成
所以我怀疑是没有擦除就不能写入

 楼主| lalallalala 发表于 2022-2-28 23:35 | 显示全部楼层
这是我擦除的函数
  1. void flash_page_erase(uint32_t address)
  2. {
  3.     u8 tempPageNum;
  4.     HAL_StatusTypeDef test = HAL_FLASH_Unlock();
  5.     test = FLASH_WaitForLastOperation(1000); //1s timeout
  6.     __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR);
  7.         tempPageNum=(address-0x08000000)/2048;
  8.     FLASH_PageErase(FLASH_BANK_1,tempPageNum-1);
  9.     test = FLASH_WaitForLastOperation(1000);
  10.     CLEAR_BIT(FLASH->CR, FLASH_CR_PER);

  11.     HAL_FLASH_Lock();
  12. }


  13. ![img]([img]https://img-mid.csdnimg.cn/release/static/image/mid/ask/564413971926137.png[/img] '1629179246(1).png')
呐咯密密 发表于 2022-3-1 09:32 | 显示全部楼层
写之前必须先擦除,因为FLASH不能写1,必须先将FLASH全擦除成FF
littlelida 发表于 2022-3-1 14:16 | 显示全部楼层
没毛病,写前擦黑板
两只袜子 发表于 2022-3-1 14:24 | 显示全部楼层
写前先擦除
diweo 发表于 2022-3-1 14:52 | 显示全部楼层
Flash写操作只能把1变成0。 要想把0变成1的话,必须进行擦除操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

82

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部