FLASH_ERASE_TRY:/* 等待 */ FLASH_WaitForLastOperation(50);/* 擦除 */ HAL_FLASHEx_Erase(&...
如果擦除操作失败,`HAL_FLASHEx_Erase`函数会返回一个错误代码,而不是`HAL_OK`。因此,你需要检查`...
问题表现在片内FLASH只能写0不能写1,故想到可能是擦除失败。 Debug发现果然HAL_FLASHEx_Erase(&FlashEraseInit,&SectorError);函数返回的FlashStatus始终是HAL_ERROR; 调试发现HAL库中调取FLASH标志位时会出现错误,几经修改都无法避免,甚至复位重烧都不起作用,只有通过STVP才能勉强擦除。 后来上网查阅资料发现有网友...
if(HAL_FLASHEx_Erase( EraseInitStruct, PageError) != HAL_OK) //开始擦除页面 { printf("...
HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) { HAL_StatusTypeDef status = HAL_OK; /* Process Locked */ __HAL_LOCK(&pFlash); /* If procedure already ongoing, reject the next one */ if (pFlash.ProcedureOnGoing != FLASH_PROC_NONE) { >>> here must be __...
HAL_FLASHEx_Erase(&EraseInitStruct, &errSector); HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); return errSector; } 0 2018-9-19 09:24:23 评论 淘帖 邀请回答 杨春林 相关推荐 • STM32G473双bank做OTA,flash不能擦除怎么解决? 171 • STM32F767通过设置Flash Bank为Single或Dual来使用...
status = HAL_FLASHEx_Erase(&EraseInit, &SectorError);if(status != HAL_OK){ SysData.Sys_Run...
(SectorAddress); // 假设GetSector函数用于获取扇区号 EraseInitStruct.NbSectors = 1; // 擦除单个扇区 // 执行擦除操作 status = HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError); // 锁定Flash HAL_FLASH_Lock(); // 检查擦除状态 if (status != HAL_OK) { // 处理擦除失败的情况...
status =HAL_FLASHEx_Erase(&strFlash_Erase, &SectorError);//status=FLASH_EraseSector(STMFLASH_GetFlashSector(addrx),VoltageRange_3);//VCC=2.7~3.6V之间!!if(status!=0xFFFFFFFFU)break;//发生错误了}elseaddrx+=4; } __HAL_FLASH_DATA_CACHE_ENABLE();HAL_FLASH_Lock();//FLASH_DataCacheCmd(...