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 #define EFLASH_RD_WAIT_POS 7 26 /******************** Bit definition for EFC_STATUS register ***************/ 27 #define EFC_STATUS_EFLASH_RDY (1 << 0) 28 29 #define SET_EFC_RD_WAIT(wait) {EFC->CTRL = (EFC->CTRL & ~(0x1F << 7)) | (wait << 7);} 30 31 /* Exported functions --------------------------------------------------------*/ 32 33 /* HAL_EFlash_Init */ 34 void HAL_EFlash_Init(uint32_t fu32_freq); 35 /* HAL_EFlash_ErasePage */ 36 bool HAL_EFlash_ErasePage(uint32_t fu32_Addr); 37 38 /* HAL_EFlash_Program_Word */ 39 bool HAL_EFlash_Program_Word(uint32_t fu32_Addr, uint32_t fu32_Data); 40 41 #endif 42