STM32G474xx HAL用户手册
stm32g4xx_hal_flash.h
转到该文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_flash.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of FLASH HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file in
00013   * the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   ******************************************************************************
00016   */
00017 
00018 /* Define to prevent recursive inclusion -------------------------------------*/
00019 #ifndef STM32G4xx_HAL_FLASH_H
00020 #define STM32G4xx_HAL_FLASH_H
00021 
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025 
00026 /* Includes ------------------------------------------------------------------*/
00027 #include "stm32g4xx_hal_def.h"
00028 
00029 /** @addtogroup STM32G4xx_HAL_Driver
00030   * @{
00031   */
00032 
00033 /** @addtogroup FLASH
00034   * @{
00035   */
00036 
00037 /* Exported types ------------------------------------------------------------*/
00038 /** @defgroup FLASH_Exported_Types FLASH导出的类型
00039   * @{
00040   */
00041 
00042 /**
00043   * @brief  FLASH擦除结构定义
00044   */
00045 typedef struct
00046 {
00047   uint32_t TypeErase;   /*!< 批量擦除或页擦除。
00048                              该参数可以是@ref FLASH_Type_Erase的值 */
00049   uint32_t Banks;       /*!< 选择要擦除的bank。
00050                              该参数必须是@ref FLASH_Banks的值
00051                              (批量擦除只能使用FLASH_BANK_BOTH) */
00052   uint32_t Page;        /*!< 禁用页擦除时的初始Flash页。
00053                              该参数必须是0到(bank中的最大页数-1)之间的值
00054                              (例如:512KB双bank为127) */
00055   uint32_t NbPages;     /*!< 要擦除的页数。
00056                              该参数必须是1到(bank中的最大页数-初始页值)之间的值*/
00057 } FLASH_EraseInitTypeDef;
00058 
00059 /**
00060   * @brief  FLASH选项字节程序结构定义
00061   */
00062 typedef struct
00063 {
00064   uint32_t OptionType;     /*!< 要配置的选项字节。
00065                                 该参数可以是@ref FLASH_OB_Type的值的组合 */
00066   uint32_t WRPArea;        /*!< 要编程的写保护区域(用于OPTIONBYTE_WRP)。
00067                                 同一时间只能编程一个WRP区域。
00068                                 该参数可以是@ref FLASH_OB_WRP_Area的值 */
00069   uint32_t WRPStartOffset; /*!< 写保护起始偏移量(用于OPTIONBYTE_WRP)。
00070                                 该参数必须是0到(bank中的最大页数-1)之间的值 */
00071   uint32_t WRPEndOffset;   /*!< 写保护结束偏移量(用于OPTIONBYTE_WRP)。
00072                                 该参数必须是WRRPStartOffset到(bank中的最大页数-1)之间的值 */
00073   uint32_t RDPLevel;       /*!< 设置读保护级别。(用于OPTIONBYTE_RDP)。
00074                                 该参数可以是@ref FLASH_OB_Read_Protection的值 */
00075   uint32_t USERType;       /*!< 要配置的用户选项字节(用于OPTIONBYTE_USER)。
00076                                 该参数可以是@ref FLASH_OB_USER_Type的组合 */
00077   uint32_t USERConfig;     /*!< 用户选项字节的值(用于OPTIONBYTE_USER)。
00078                                 该参数可以是@ref FLASH_OB_USER_BOR_LEVEL,
00079                                 @ref FLASH_OB_USER_nRST_STOP, @ref FLASH_OB_USER_nRST_STANDBY,
00080                                 @ref FLASH_OB_USER_nRST_SHUTDOWN, @ref FLASH_OB_USER_IWDG_SW,
00081                                 @ref FLASH_OB_USER_IWDG_STOP, @ref FLASH_OB_USER_IWDG_STANDBY,
00082                                 @ref FLASH_OB_USER_WWDG_SW, @ref FLASH_OB_USER_BFB2 (*),
00083                                 @ref FLASH_OB_USER_nBOOT1, @ref FLASH_OB_USER_SRAM_PE,
00084                                 @ref FLASH_OB_USER_CCMSRAM_RST的组合
00085                                 @note (*) 取决于设备 */
00086   uint32_t PCROPConfig;    /*!< PCROP的配置(用于OPTIONBYTE_PCROP)。
00087                                 该参数必须是@ref FLASH_Banks(除了FLASH_BANK_BOTH)
00088                                 和@ref FLASH_OB_PCROP_RDP的组合 */
00089   uint32_t PCROPStartAddr; /*!< PCROP起始地址(用于OPTIONBYTE_PCROP)。
00090                                 该参数必须在bank的起始和结束之间
00091                                 => 注意bank交换的地址 */
00092   uint32_t PCROPEndAddr;   /*!< PCROP结束地址(用于OPTIONBYTE_PCROP)。
00093                                 该参数必须在PCROP起始地址和bank结束之间 */
00094   uint32_t BootEntryPoint; /*!< 设置启动锁(用于OPTIONBYTE_BOOT_LOCK)。
00095                                 该参数可以是@ref FLASH_OB_Boot_Lock的值 */
00096   uint32_t SecBank;        /*!< 要编程的可保护内存区域的bank(用于OPTIONBYTE_SEC)。
00097                                 同一时间只能编程一个可保护内存区域。
00098                                 该参数可以是以下值之一:
00099                                 FLASH_BANK_1:bank 1中要编程的可保护内存区域
00100                                 FLASH_BANK_2:bank 2中要编程的可保护内存区域(*)
00101                                 @note (*) 取决于设备 */
00102   uint32_t SecSize;        /*!< 要编程的可保护内存区域的大小(用于OPTIONBYTE_SEC),
00103                                 以页数表示。可保护内存区域从bank的第一页开始。
00104                                 同一时间只能编程一个可保护内存区域。
00105                                 该参数必须是0到(bank中的最大页数-1)之间的值 */
00106 } FLASH_OBProgramInitTypeDef;
00107 
00108 /**
00109   * @brief  FLASH过程结构定义
00110   */
00111 typedef enum
00112 {
00113   FLASH_PROC_NONE = 0,
00114   FLASH_PROC_PAGE_ERASE,
00115   FLASH_PROC_MASS_ERASE,
00116   FLASH_PROC_PROGRAM,
00117   FLASH_PROC_PROGRAM_LAST
00118 } FLASH_ProcedureTypeDef;
00119 
00120 /**
00121   * @brief  FLASH缓存结构定义
00122   */
00123 typedef enum
00124 {
00125   FLASH_CACHE_DISABLED = 0,
00126   FLASH_CACHE_ICACHE_ENABLED,
00127   FLASH_CACHE_DCACHE_ENABLED,
00128   FLASH_CACHE_ICACHE_DCACHE_ENABLED
00129 } FLASH_CacheTypeDef;
00130 
00131 /**
00132   * @brief  FLASH句柄结构定义
00133   */
00134 typedef struct
00135 {
00136   HAL_LockTypeDef             Lock;              /* FLASH锁定对象 */
00137   __IO uint32_t               ErrorCode;         /* FLASH错误代码 */
00138   __IO FLASH_ProcedureTypeDef ProcedureOnGoing;  /* 内部变量,用于指示中断上下文中正在进行的操作 */
00139   __IO uint32_t               Address;           /* 内部变量,用于保存中断上下文中选择的编程地址 */
00140   __IO uint32_t               Bank;              /* 内部变量,用于保存中断上下文中擦除期间选择的当前bank */
00141   __IO uint32_t               Page;              /* 内部变量,用于定义中断上下文中正在擦除的当前页 */
00142   __IO uint32_t               NbPagesToErase;    /* 内部变量,用于保存中断上下文中剩余的要擦除的页数 */
00143   __IO FLASH_CacheTypeDef     CacheToReactivate; /* 内部变量,用于指示应重新激活的缓存 */
00144 } FLASH_ProcessType