/** ****************************************************************************** * @file flash.c * @author Hypmotion Firmware Team * @version V1.0.0 * @date May 27, 2026 * @brief * ****************************************************************************** * @Copyright * COPYRIGHT NOTICE: (c) 2026 NST. * All rights reserved. * * The information contained herein is confidential * property of Company. The use, copying, transfer or * disclosure of such information is prohibited except * by express written agreement with Company. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "flash.h" /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ HAL_StatusTypeDef FLASH_WriteUint32(uint32_t address, uint32_t data) { HAL_StatusTypeDef status; HAL_FLASH_Unlock(); FLASH_EraseInitTypeDef eraseInit; uint32_t pageError = 0; eraseInit.TypeErase = FLASH_TYPEERASE_PAGES; eraseInit.PageAddress = address; eraseInit.NbPages = 1; status = HAL_FLASHEx_Erase(&eraseInit, &pageError); if(status != HAL_OK) { HAL_FLASH_Lock(); return status; } status = HAL_FLASH_Program( FLASH_TYPEPROGRAM_WORD, address, data); HAL_FLASH_Lock(); return status; } uint32_t FLASH_ReadUint32(uint32_t address) { return *(volatile uint32_t*)address; } void FLASH_SaveDeviceID(uint32_t id) { FLASH_WriteUint32(FLASH_DEVICE_ID_ADDR, id); } uint32_t FLASH_LoadDeviceID(void) { uint32_t id; id = FLASH_ReadUint32(FLASH_DEVICE_ID_ADDR); #if (FLASH_FORCE_DEFAULT_DEVICE_ID_ON_BOOT != 0U) id = FLASH_DEFAULT_DEVICE_ID; FLASH_SaveDeviceID(id); #else if(id == 0xFFFFFFFF) { id = FLASH_DEFAULT_DEVICE_ID; FLASH_SaveDeviceID(id); } #endif return id; } /** @brief * @param[in] @return */ /************************ (C) COPYRIGHT HYPMOTION *****END OF FILE****************/