summaryrefslogtreecommitdiff
path: root/bsp/acm32/acm32f0x0-nucleo/libraries/HAL_Driver/Inc/HAL_EFLASH.h
blob: 2d1986758bd1da9bcc1176ed0b86c59abd672a46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
  ******************************************************************************
  * @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)

#define EFLASH_RD_WAIT_POS   7
/********************  Bit definition for EFC_STATUS register  ***************/
#define EFC_STATUS_EFLASH_RDY           (1 << 0)

#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