我正在尝试使用HAL库将数据刷新到EEPROM
的{{1}}中。此函数不断返回STM32L051K8
。通过调试,我发现了问题。
在HAL Flash库中,将数据写入HAL_ERROR
之前,它将检查是否设置了EEPROM
和FLASH_WaitForLastOperation
(写保护错误标志)的错误标志。因此它返回FLASH_FLAG_WRPERR
,但是HAL_ERROR
返回HAL_FLASHEx_DATAEEPROM_Unlock
。
这是我的职能
HAL_OK
HAL库功能
HAL_StatusTypeDef setCommAddressState(void){
HAL_StatusTypeDef status;
status = HAL_FLASHEx_DATAEEPROM_Unlock();
if (status != HAL_ERROR)
{
status = HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_BYTE, COM_ADDRESS_STATE_ADDRESS, comAddressStateData);
if (status == HAL_OK){
comAddressState = comAddressStateData;
}
}
HAL_FLASHEx_DATAEEPROM_Lock();
return status;
}