使用cube配置的hal库来写,由于G030没有eeprom,所以想使用flash写存来代替,常规的flash写存 1)解锁flash 2)flash页擦除 3)写flash数据 4)锁存flash 测试运行仅写存成功一次,之后无法在此写存,发现异常均卡在页擦除失败,无法对flash写存。在此发帖寻求答案,谢谢。 下面是牵扯到的程序, #define APPL_MAGIC_VALUE (uint32_t)0x08006000 /* NVM区域标记 */ #define NVM_MODE_VALUE_OFFSET APPL_MAGIC_VALUE FLASH_EraseInitTypeDef My_Flash; __disable_irq(); // HAL_FLASH_Unlock(); My_Flash.TypeErase = FLASH_TYPEERASE_PAGES; //标明Flash执行页面只做擦除操作 My_Flash.Page = APPL_MAGIC_VALUE; //声明要擦除的地址 My_Flash.NbPages = 1; uint32_t PageError = 0; //FLASH_PageErase(APPL_MAGIC_VALUE); asd=HAL_FLASHEx_Erase(&My_Flash, &PageError); HAL_FLASH_Lock(); HAL_FLASH_Unlock(); HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD,APPL_MAGIC_VALUE, Light_Change_Flag); HAL_FLASH_Lock(); __enable_irq(); |
怎么解决的?为以后遇到同样问题的兄弟留下一个思路。