MCU型号:
STM32L476RCT6
大家有用过 HAL_FLASHEx_Erase() 这个函数吗? 我根据官方例程写的代码,读写都能成功,但是擦除失败。 调用擦除函数 HAL_FLASHEx_Erase(),返回 0 = 擦除成功,但是擦除后返回去读,却发现并没有真正的被擦掉,不是0xFF。
下面是我的代码,各位大侠指点一下,非常感谢!
void Erase_MCU_Flash(uint32_t p_number)
{
uint8_t state;
uint32_t addr;
p_number = 96;
addr = FLASH_BASE + FLASH_PAGE_SIZE * p_number;
HAL_FLASH_Unlock();
// Clear OPTVERR bit set on virgin samples
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR);
BankNumber = GetBank(addr); // Get the bank
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInitStruct.Banks = BankNumber;
//EraseInitStruct.Banks = FLASH_BANK_1;
EraseInitStruct.Page = p_number;
EraseInitStruct.NbPages = 1;
//if(HAL_FLASHEx_Erase( EraseInitStruct, PAGEError) != HAL_OK) // 这里默认擦除成功
//{ ; }
state = HAL_FLASHEx_Erase( EraseInitStruct, PAGEError); // 测得这里返回0
HAL_FLASH_Lock();
}
是不是擦除过程中,要关闭总中断之类的??如果是的话,要怎么关?