46 lines
1.7 KiB
C
46 lines
1.7 KiB
C
/*
|
|
******************************************************************************
|
|
* @file HAL_EFlash.h
|
|
* @version V1.0.0
|
|
* @date 2020
|
|
* @brief Header file of EFlash HAL module.
|
|
******************************************************************************
|
|
*/
|
|
#ifndef __HAL_EFlash_H__
|
|
#define __HAL_EFlash_H__
|
|
|
|
#include "ACM32Fxx_HAL.h"
|
|
|
|
#define EFLASH_PAGE_SIZE (512UL)
|
|
|
|
#define HAL_EFLASH_READ_WORD(Addr) (*(volatile uint32_t *)(Addr)) // Read By Word
|
|
#define HAL_EFLASH_READ_HALFWORD(Addr) (*(volatile uint16_t *)(Addr)) // Read By Half Word
|
|
#define HAL_EFLASH_READ_BYTE(Addr) (*(volatile uint8_t *)(Addr)) // Read By Byte
|
|
|
|
/******************** Bit definition for EFC_CTRL register ******************/
|
|
#define EFC_CTRL_CHIP_ERASE_MODE (1 << 2)
|
|
#define EFC_CTRL_PAGE_ERASE_MODE (1 << 1)
|
|
#define EFC_CTRL_PROGRAM_MODE (1 << 0)
|
|
|
|
/******************** Bit definition for EFC_STATUS register ***************/
|
|
#define EFC_STATUS_NVR4_LOCK (1 << 4)
|
|
#define EFC_STATUS_NVR3_LOCK (1 << 3)
|
|
#define EFC_STATUS_NVR2_LOCK (1 << 2)
|
|
#define EFC_STATUS_NVR1_LOCK (1 << 1)
|
|
#define EFC_STATUS_EFLASH_RDY (1 << 0)
|
|
|
|
#define RD_WAIT_ENSURE_OK 8
|
|
#define SET_EFC_RD_WAIT(wait) {EFC->CTRL = (EFC->CTRL & ~(0x1F << 7)) | (wait << 7);}
|
|
|
|
/* Exported functions --------------------------------------------------------*/
|
|
|
|
/* HAL_EFlash_Init */
|
|
void HAL_EFlash_Init(uint32_t fu32_freq);
|
|
/* HAL_EFlash_ErasePage */
|
|
bool HAL_EFlash_ErasePage(uint32_t fu32_Addr);
|
|
|
|
/* HAL_EFlash_Program_Word */
|
|
bool HAL_EFlash_Program_Word(uint32_t fu32_Addr, uint32_t fu32_Data);
|
|
|
|
#endif
|