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