|
STM32G474xx HAL 用户手册
|
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 <