1 /**
2   ******************************************************************************
3   * @file    lib_flash.h
4   * @author  Application Team
5   * @version V4.4.0
6   * @date    2018-09-27
7   * @brief   FLASH library.
8   ******************************************************************************
9   * @attention
10   *
11   ******************************************************************************
12   */
13 #ifndef __LIB_FLASH_H
14 #define __LIB_FLASH_H
15 
16 #ifdef __cplusplus
17  extern "C" {
18 #endif
19 
20 #include "target.h"
21 
22 //CSMode
23 #define FLASH_CSMODE_DISABLE        FLASH_CTRL_CSMODE_DISABLE
24 #define FLASH_CSMODE_ALWAYSON       FLASH_CTRL_CSMODE_ALWAYSON
25 #define FLASH_CSMODE_TIM2OF         FLASH_CTRL_CSMODE_TIM2OV
26 #define FLASH_CSMODE_RTC            FLASH_CTRL_CSMODE_RTC
27 #define IS_FLASH_CSMODE(__CSMODE__)  (((__CSMODE__) == FLASH_CSMODE_DISABLE)  ||\
28                                       ((__CSMODE__) == FLASH_CSMODE_ALWAYSON) ||\
29                                       ((__CSMODE__) == FLASH_CSMODE_TIM2OF)   ||\
30                                       ((__CSMODE__) == FLASH_CSMODE_RTC))
31 
32 //INT
33 #define FLASH_INT_CS                FLASH_CTRL_CSINTEN
34 #define IS_FLASH_INT(__INT__)  ((__INT__) == FLASH_INT_CS)
35 
36 //WriteStatus
37 #define FLASH_WSTA_BUSY         0
38 #define FLASH_WRITE_FINISH      1
39 #define FLASH_WSTA_FINISH       FLASH_WRITE_FINISH
40 
41 #define IS_FLASH_ADDRESS(__ADDRESS__) ((__ADDRESS__) < 0x40000UL)
42 
43 #define IS_FLASH_ADRRW(__ADDRW__)  (((__ADDRW__) < 0x40000UL) &&\
44                                     (((__ADDRW__) & 0x3U) == 0U))
45 
46 #define IS_FLASH_ADRRHW(__ADDRHW__)  (((__ADDRHW__) < 0x40000UL) &&\
47                                       (((__ADDRHW__) & 0x1U) == 0U))
48 
49 #define IS_FLASH_CHECKSUMADDR(__ADDRESS1__,__ADDRESS2__) (((__ADDRESS1__) < 0x40000) && ((__ADDRESS2__) < 0x40000) && ((__ADDRESS1__) < (__ADDRESS2__)))
50 
51 /* Exported Functions ------------------------------------------------------- */
52 
53 void FLASH_Init(uint32_t CSMode);
54 void FLASH_INTConfig(uint32_t IntMask, uint32_t NewState);
55 void FLASH_CycleInit(void);
56 void FLASH_SectorErase(uint32_t SectorAddr);
57 void FLASH_ProgramWord(uint32_t Addr, uint32_t *WordBuffer, uint32_t Length);
58 void FLASH_ProgramHWord(uint32_t Addr, uint16_t *HWordBuffer, uint32_t Length);
59 void FLASH_ProgramByte(uint32_t Addr, uint8_t *ByteBuffer, uint32_t Length);
60 uint32_t FLASH_GetWriteStatus(void);
61 void FLASH_SetCheckSumRange(uint32_t AddrStart, uint32_t AddrEnd);
62 void FLASH_SetCheckSumCompValue(uint32_t Checksum);
63 uint32_t FLASH_GetCheckSum(void);
64 uint8_t FLASH_GetINTStatus(uint32_t IntMask);
65 void FLASH_ClearINTStatus(uint32_t IntMask);
66 
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 
72 #endif  /* __LIB_FLASH_H */
73 
74 /*********************************** END OF FILE ******************************/
75