QQT912/CW32F030/原项目程序/SW/Libraries/inc/cw32f030_flash.h

163 lines
6.4 KiB
C
Raw Normal View History

/**
* @file cw32f030_flash.h
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2021-05-13
*
* @copyright Copyright (c) 2021
*
*/
/*******************************************************************************
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* <EFBFBD>人<EFBFBD><EFBFBD>Դ<EFBFBD>뵼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>̴<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ר<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>ܡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>κη<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>人<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򿪷<EFBFBD><EFBFBD>̺͹<EFBFBD>Ӧ<EFBFBD>̶Գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ı<EFBFBD>֤
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD>人<EFBFBD><EFBFBD>Դ<EFBFBD>뵼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򿪷<EFBFBD><EFBFBD>̻<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD>䷢<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD>𻵣<EFBFBD>ֱ<EFBFBD>ӵġ<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>𺦣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𺦣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD>ڿɽ<EFBFBD>ʡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
* ijЩ˾<EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κε<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijЩ<EFBFBD><EFBFBD>
* ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
*******************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __CW32F03x_FLASH_H__
#define __CW32F03x_FLASH_H__
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************/
/* Include files */
/*****************************************************************************/
#include "base_types.h"
#include "cw32f030.h"
/*****************************************************************************/
/* Global pre-processor symbols/macros ('#define') */
/*****************************************************************************/
//============================================================
/** @defgroup FLASH״̬
* @{
*/
#define FLASH_FLAG_OK (0UL)
#define FLASH_FLAG_BSY (bv5) /*!< FLASH Busy flag */
#define FLASH_FLAG_PGERR (bv4) /*!< FLASH Program error flag */
#define FLASH_FLAG_WRPRTERR (bv1) /*!< FLASH Write protected error flag */
#define FLASH_FLAG_PCERR (bv0) /*!< FLASH PC error flag */
#define FLASH_ERROR_ADDR 0x80
/** @defgroup <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
* @{
*/
#define FLASH_Latency_1 ((uint32_t)0x00000000) /*!< FLASH One Latency cycle */
#define FLASH_Latency_2 ((uint32_t)0x00000001) /*!< FLASH Two Latency cycles */
#define FLASH_Latency_3 ((uint32_t)0x00000002) /*!< FLASH THREE Latency cycles */
#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_Latency_1) || \
((LATENCY) == FLASH_Latency_2) || \
((LATENCY) == FLASH_Latency_3))
/** @defgroup FETCH<43><48><EFBFBD><EFBFBD>
* @{
*/
#define FLASH_Prefetch_Enable ((uint32_t)0x00000008) /*!< FLASH Prefetch Enable */
#define FLASH_Prefetch_Disable ((uint32_t)0x00000000) /*!< FLASH Prefetch Disable */
#define IS_FLASH_PREFETCH_STATE(STATE) (((STATE) == FLASH_Prefetch_Enable) || \
((STATE) == FLASH_Prefetch_Disable))
/** @defgroup CACHE<48><45><EFBFBD><EFBFBD>
* @{
*/
#define FLASH_Cache_Enable ((uint32_t)0x00000010) /*!< FLASH Buffer Enable */
#define FLASH_Cache_Disable ((uint32_t)0x00000000) /*!< FLASH Buffer Disable */
#define IS_FLASH_CACHE_STATE(STATE) (((STATE) == FLASH_Cache_Enable) || \
((STATE) == FLASH_Cache_Disable))
/** @defgroup <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
* @{
*/
#define FLASH_RDLEVEL0 ((uint16_t)0x00)
#define FLASH_RDLEVEL1 ((uint16_t)0x01)
#define FLASH_RDLEVEL2 ((uint16_t)0x02)
#define FLASH_RDLEVEL3 ((uint16_t)0x03)
#define IS_FLASH_RDLEVEL(LEVEL) (((LEVEL) == FLASH_RDLEVEL0) || \
((LEVEL) == FLASH_RDLEVEL1) || \
((LEVEL) == FLASH_RDLEVEL2) || \
((LEVEL) == FLASH_RDLEVEL3))
/** @defgroup <20>жϱ<D0B6>־λ
* @{
*/
#define FLASH_IT_PROG (bv4)
#define FLASH_IT_PAGELOCK (bv1)
#define FLASH_IT_PC (bv0)
#define IS_FLASH_IT(IT) (((IT) & 0xFFFFFFEC == 0x0UL) && ((IT) != 0x0UL))
#define IS_FLASH_GET_IT(IT) (((IT) == FLASH_IT_PROG) || \
((IT) == FLASH_IT_PAGELOCK) || \
((IT) == FLASH_IT_PC))
/** @defgroup FLASHҳ
* @{
*/
#define FLASH_WRProt_AllPages ((uint32_t)0x0000FFFF) /*!< Write protection of all Pages */
#define IS_FLASH_PAGE_Number(PAGENUMBER) (((PAGENUMBER) >= 0) && ((PAGENUMBER) <= 127))
#define IS_FLASH_ADDRESS(ADDRESS) (((ADDRESS) >= 0x00000000) && ((ADDRESS) < 0x00010000))
//============================================================
//<2F><><EFBFBD><EFBFBD>FLASH<53><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FLASH_SetLatency( uint32_t FLASH_Latency );
//<2F><><EFBFBD><EFBFBD>Ԥȡʹ<C8A1><CAB9>
void FLASH_PrefetchCmd(uint32_t FLASH_Prefetch);
//<2F><><EFBFBD><EFBFBD>BUFFERʹ<52><CAB9>
void FLASH_CacheCmd(uint32_t FLASH_Buffer);
//<2F><>ȡFLASH<53><48>Fetch״̬
FlagStatus FLASH_GetPrefetchStatus(void);
//<2F><>ȡFLASH<53><48>Cache״̬
FlagStatus FLASH_GetCacheStatus(void);
//<2F><>ȡFLASH<53>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
uint8_t FLASH_GetReadOutLevel( void );
//<2F><><EFBFBD><EFBFBD>FLASH<53>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
void FLASH_SetReadOutLevel( uint16_t RdLevel );
//<2F><><EFBFBD><EFBFBD>FLASH<53><48><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
void FLASH_UnlockAllPages(void);
//<2F><><EFBFBD><EFBFBD>FLASH<53><48><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
void FLASH_LockAllPages( void );
//<2F><><EFBFBD><EFBFBD>FLASHָ<48><D6B8>ҳ<EFBFBD>棺<EFBFBD><E6A3BA><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD>0~127
uint8_t FLASH_UnlockPage( uint8_t Page_Number );
//<2F><><EFBFBD><EFBFBD>FLASHָ<48><D6B8>ҳ<EFBFBD>棺<EFBFBD><E6A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
uint8_t FLASH_UnlockPages( uint32_t StartAddr , uint32_t EndAddr );
//<2F><><EFBFBD><EFBFBD>FLASHָ<48><D6B8>ҳ<EFBFBD>棺<EFBFBD><E6A3BA><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD>0~127
uint8_t FLASH_ErasePage( uint8_t Page_Number );
//<2F><><EFBFBD><EFBFBD>FLASHָ<48><D6B8>ҳ<EFBFBD>棺<EFBFBD><E6A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
uint8_t FLASH_ErasePages( uint32_t StartAddr , uint32_t EndAddr );
//ָ<><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʼдһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д
uint8_t FLASH_WirteBytes( uint32_t WriteAddr, uint8_t *pWrBuf , uint16_t WrByteCnt );
//<2F><><EFBFBD><EFBFBD>FLASHָ<48><D6B8>ҳ<EFBFBD>棺<EFBFBD><E6A3BA><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0~127
uint8_t FLASH_LockPage( uint8_t Page_Number );
//<2F><><EFBFBD><EFBFBD>FLASHָ<48><D6B8>ҳ<EFBFBD>棺<EFBFBD><E6A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
uint8_t FLASH_LockPages( uint32_t StartAddr , uint32_t EndAddr );
//FLASHָ<48><D6B8><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState);
//<2F><>ȡָ<C8A1><D6B8>FLASH<53>жϱ<D0B6>־λ
ITStatus FLASH_GetITStatus(uint32_t FLASH_IT);
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>FLASH<53>жϱ<D0B6>־λ
void FLASH_ClearITPendingBit(uint32_t FLASH_IT);
//<2F><>ȡFLASHģ<48>鵱ǰ״̬//
uint32_t FLASH_GetStatus(void);
//============================================================
#ifdef __cplusplus
}
#endif
#endif