STM32G474xx HAL 用户手册
stm32g4xx_hal_nor.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_nor.h
00004   * @author  MCD Application Team
00005   * @brief   NOR HAL 模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * 保留所有权利。
00011   *
00012   * 本软件的许可条款可在本软件组件根目录下的 LICENSE 文件中找到。
00013   * 如果本软件未附带 LICENSE 文件,则按原样提供。
00014   *
00015   ******************************************************************************
00016   */
00017   */
00018 
00019 /* 定义以防止递归包含 -------------------------------------*/
00020 #ifndef STM32G4xx_HAL_NOR_H
00021 #define STM32G4xx_HAL_NOR_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 #if defined(FMC_BANK1)
00028 
00029 /* 包含文件 ------------------------------------------------------------------*/
00030 #include "stm32g4xx_ll_fmc.h"
00031 
00032 /** @addtogroup STM32G4xx_HAL_Driver
00033   * @{
00034   */
00035 
00036 /** @addtogroup NOR
00037   * @{
00038   */
00039 
00040 /* 导出的类型定义 ----------------------------------------------------------*/
00041 /** @defgroup NOR_Exported_Types NOR 导出的类型
00042   * @{
00043   */
00044 
00045 /**
00046   * @brief  HAL SRAM 状态结构定义
00047   */
00048 typedef enum
00049 {
00050   HAL_NOR_STATE_RESET             = 0x00U,  /*!< NOR 尚未初始化或已禁用  */
00051   HAL_NOR_STATE_READY             = 0x01U,  /*!< NOR 已初始化并准备就绪    */
00052   HAL_NOR_STATE_BUSY              = 0x02U,  /*!< NOR 内部处理正在进行中   */
00053   HAL_NOR_STATE_ERROR             = 0x03U,  /*!< NOR 错误状态                      */
00054   HAL_NOR_STATE_PROTECTED         = 0x04U   /*!< NOR NORSRAM 设备写保护   */
00055 } HAL_NOR_StateTypeDef;
00056 
00057 /**
00058   * @brief  FMC NOR 状态类型定义
00059   */
00060 typedef enum
00061 {
00062   HAL_NOR_STATUS_SUCCESS  = 0U,
00063   HAL_NOR_STATUS_ONGOING,
00064   HAL_NOR_STATUS_ERROR,
00065   HAL_NOR_STATUS_TIMEOUT
00066 } HAL_NOR_StatusTypeDef;
00067 
00068 /**
00069   * @brief  FMC NOR ID 类型定义
00070   */
00071 typedef struct
00072 {
00073   uint16_t Manufacturer_Code;  /*!< 定义用于识别存储器的设备制造商代码       */
00074 
00075   uint16_t Device_Code1;
00076 
00077   uint16_t Device_Code2;
00078 
00079   uint16_t Device_Code3;       /*!< 定义用于识别存储器的设备代码。
00080                                     这些代码可以通过设置特定的控制信号和地址进行读取操作来访问。
00081                                     也可以通过发出自动选择命令来访问                                                   */
00082                                     */
00083 } NOR_IDTypeDef;
00084 
00085 /**
00086   * @brief  FMC NOR CFI 类型定义
00087   */
00088 typedef struct
00089 {
00090   /*!< 定义存储在存储器通用闪存接口中的信息,
00091        其中包含各种电气和时序参数的描述、
00092        密度信息以及存储器支持的功能                   */
00093 
00094   uint16_t CFI_1;
00095 
00096   uint16_t CFI_2;
00097 
00098   uint16_t CFI_3;
00099 
00100   uint16_t CFI_4;
00101 } NOR_CFITypeDef;
00102 
00103 /**
00104   * @brief  NOR 句柄结构定义
00105   */
00106 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
00107 typedef struct __NOR_HandleTypeDef
00108 #else
00109 typedef struct
00110 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS  */
00111 
00112 {
00113   FMC_NORSRAM_TypeDef           *Instance;    /*!< 寄存器基地址                        */
00114 
00115   FMC_NORSRAM_EXTENDED_TypeDef  *Extended;    /*!< 扩展模式寄存器基地址          */
00116 
00117   FMC_NORSRAM_InitTypeDef       Init;         /*!< NOR 设备控制配置参数  */
00118 
00119   HAL_LockTypeDef               Lock;         /*!< NOR 锁定对象                           */
00120 
00121   __IO HAL_NOR_StateTypeDef     State;        /*!< NOR 设备访问状态                      */
00122 
00123   uint32_t                      CommandSet;   /*!< NOR 算法命令集和控制        */
00124 
00125 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
00126   void (* MspInitCallback)(struct __NOR_HandleTypeDef *hnor);               /*!< NOR Msp 初始化回调              */
00127   void (* MspDeInitCallback)(struct __NOR_HandleTypeDef *hnor);             /*!< NOR Msp 反初始化回调            */
00128 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
00129 } NOR_HandleTypeDef;
00130 
00131 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
00132 /**
00133   * @brief  HAL NOR 回调 ID 枚举定义
00134   */
00135 typedef enum
00136 {
00137   HAL_NOR_MSP_INIT_CB_ID       = 0x00U,  /*!< NOR MspInit 回调 ID          */
00138   HAL_NOR_MSP_DEINIT_CB_ID     = 0x01U   /*!< NOR MspDeInit 回调 ID        */
00139 } HAL_NOR_CallbackIDTypeDef;
00140 
00141 /**
00142   * @brief  HAL NOR 回调指针定义
00143   */
00144 typedef void (*pNOR_CallbackTypeDef)(NOR_HandleTypeDef *hnor);
00145 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
00146 /**
00147   * @}
00148   */
00149 
00150 /* 导出的常量 --------------------------------------------------------*/
00151 /* 导出的宏 ------------------------------------------------------------*/
00152 /** @defgroup NOR_Exported_Macros NOR 导出的宏
00153   * @{
00154   */
00155 /** @brief 重置 NOR 句柄状态
00156   * @param  __HANDLE__ 指定 NOR 句柄。
00157   * @retval 无
00158   */
00159 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
00160 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__)          do {                                             \
00161                                                                (__HANDLE__)->State = HAL_NOR_STATE_RESET;  \
00162                                                                (__HANDLE__)->MspInitCallback = NULL;       \
00163                                                                (__HANDLE__)->MspDeInitCallback = NULL;     \
00164                                                              } while(0)
00165 #else
00166 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NOR_STATE_RESET)
00167 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
00168 /**
00169   * @}
00170   */
00171 
00172 /* 导出的函数 --------------------------------------------------------*/
00173 /** @addtogroup NOR_Exported_Functions NOR 导出的函数
00174   * @{
00175   */
00176 
00177 /** @addtogroup NOR_Exported_Functions_Group1 初始化和反初始化函数
00178   * @{
00179   */
00180 
00181 /* 初始化/反初始化函数  ********************************/
00182 HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing,
00183                                FMC_NORSRAM_TimingTypeDef *ExtTiming);
00184 HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor);
00185 void HAL_NOR_MspInit(NOR_HandleTypeDef *hnor);
00186 void HAL_NOR_MspDeInit(NOR_HandleTypeDef *hnor);
00187 void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout);
00188 /**
00189   * @}
00190   */
00191 
00192 /** @addtogroup NOR_Exported_Functions_Group2 输入和输出函数
00193   * @{
00194   */
00195 
00196 /* I/O 操作函数  ***************************************************/
00197 HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID);
00198 HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor);
00199 HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
00200 HAL_StatusTypeDef <