1 /* 2 ****************************************************************************** 3 * @file HAL_EFlash.h 4 * @version V1.0.0 5 * @date 2020 6 * @brief Header file of EFlash HAL module. 7 ****************************************************************************** 8 */ 9 #ifndef __HAL_EFlash_H__ 10 #define __HAL_EFlash_H__ 11 12 #include "ACM32Fxx_HAL.h" 13 14 #define EFLASH_PAGE_SIZE (512UL) 15 16 #define HAL_EFLASH_READ_WORD(Addr) (*(volatile uint32_t *)(Addr)) // Read By Word 17 #define HAL_EFLASH_READ_HALFWORD(Addr) (*(volatile uint16_t *)(Addr)) // Read By Half Word 18 #define HAL_EFLASH_READ_BYTE(Addr) (*(volatile uint8_t *)(Addr)) // Read By Byte 19 20 /******************** Bit definition for EFC_CTRL register ******************/ 21 #define EFC_CTRL_CHIP_ERASE_MODE (1 << 2) 22 #define EFC_CTRL_PAGE_ERASE_MODE (1 << 1) 23 #define EFC_CTRL_PROGRAM_MODE (1 << 0) 24 25 /******************** Bit definition for EFC_STATUS register ***************/ 26 #define EFC_STATUS_NVR4_LOCK (1 << 4) 27 #define EFC_STATUS_NVR3_LOCK (1 << 3) 28 #define EFC_STATUS_NVR2_LOCK (1 << 2) 29 #define EFC_STATUS_NVR1_LOCK (1 << 1) 30 #define EFC_STATUS_EFLASH_RDY (1 << 0) 31 32 #define RD_WAIT_ENSURE_OK 8 33 #define SET_EFC_RD_WAIT(wait) {EFC->CTRL = (EFC->CTRL & ~(0x1F << 7)) | (wait << 7);} 34 35 /* Exported functions --------------------------------------------------------*/ 36 37 /* HAL_EFlash_Init */ 38 void HAL_EFlash_Init(uint32_t fu32_freq); 39 /* HAL_EFlash_ErasePage */ 40 bool HAL_EFlash_ErasePage(uint32_t fu32_Addr); 41 42 /* HAL_EFlash_Program_Word */ 43 bool HAL_EFlash_Program_Word(uint32_t fu32_Addr, uint32_t fu32_Data); 44 45 #endif 46