|
STM32G474xx HAL 用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_sram.h 00004 * @author MCD Application Team 00005 * @brief SRAM HAL模块的头文件。 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * 版权所有 (c) 2019 STMicroelectronics。 00010 * 保留所有权利。 00011 * 00012 * 本软件根据 LICENSE 文件中的条款获得许可, 00013 * 该文件位于本软件组件的根目录中。 00014 * 如果没有随本软件提供 LICENSE 文件,则按"原样"提供。 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* 定义以防止重复包含 -------------------------------------*/ 00020 #ifndef STM32G4xx_HAL_SRAM_H 00021 #define STM32G4xx_HAL_SRAM_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 /** @addtogroup SRAM 00036 * @{ 00037 */ 00038 00039 /* 导出的类型定义 ----------------------------------------------------------*/ 00040 00041 /** @defgroup SRAM_Exported_Types SRAM 导出的类型 00042 * @{ 00043 */ 00044 /** 00045 * @brief HAL SRAM 状态结构定义 00046 */ 00047 typedef enum 00048 { 00049 HAL_SRAM_STATE_RESET = 0x00U, /*!< SRAM 尚未初始化或已禁用 */ 00050 HAL_SRAM_STATE_READY = 0x01U, /*!< SRAM 已初始化并准备就绪 */ 00051 HAL_SRAM_STATE_BUSY = 0x02U, /*!< SRAM 内部处理正在进行 */ 00052 HAL_SRAM_STATE_ERROR = 0x03U, /*!< SRAM 错误状态 */ 00053 HAL_SRAM_STATE_PROTECTED = 0x04U /*!< SRAM 外设 NORSRAM 设备写保护 */ 00054 00055 } HAL_SRAM_StateTypeDef; 00056 00057 /** 00058 * @brief SRAM 句柄结构定义 00059 */ 00060 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1) 00061 typedef struct __SRAM_HandleTypeDef 00062 #else 00063 typedef struct 00064 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */ 00065 { 00066 FMC_NORSRAM_TypeDef *Instance; /*!< 寄存器基地址 */ 00067 00068 FMC_NORSRAM_EXTENDED_TypeDef *Extended; /*!< 扩展模式寄存器基地址 */ 00069 00070 FMC_NORSRAM_InitTypeDef Init; /*!< SRAM 设备控制配置参数 */ 00071 00072 HAL_LockTypeDef Lock; /*!< SRAM 锁定对象 */ 00073 00074 __IO HAL_SRAM_StateTypeDef State; /*!< SRAM 设备访问状态 */ 00075 00076 DMA_HandleTypeDef *hdma; /*!< 指向 DMA 处理程序的指针 */ 00077 00078 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1) 00079 void (* MspInitCallback)(struct __SRAM_HandleTypeDef *hsram); /*!< SRAM Msp 初始化回调 */ 00080 void (* MspDeInitCallback)(struct __SRAM_HandleTypeDef *hsram); /*!< SRAM Msp 反初始化回调 */ 00081 void (* DmaXferCpltCallback)(DMA_HandleTypeDef *hdma); /*!< SRAM DMA 传输完成回调 */ 00082 void (* DmaXferErrorCallback)(DMA_HandleTypeDef *hdma); /*!< SRAM DMA 传输错误回调 */ 00083 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */ 00084 } SRAM_HandleTypeDef; 00085 00086 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1) 00087 /** 00088 * @brief HAL SRAM 回调标识枚举定义 00089 */ 00090 typedef enum 00091 { 00092 HAL_SRAM_MSP_INIT_CB_ID = 0x00U, /*!< SRAM MspInit 回调标识 */ 00093 HAL_SRAM_MSP_DEINIT_CB_ID = 0x01U, /*!< SRAM MspDeInit 回调标识 */ 00094 HAL_SRAM_DMA_XFER_CPLT_CB_ID = 0x02U, /*!< SRAM DMA 传输完成回调标识 */ 00095 HAL_SRAM_DMA_XFER_ERR_CB_ID = 0x03U /*!< SRAM DMA 传输完成回调标识 */ 00096 } HAL_SRAM_CallbackIDTypeDef; 00097 00098 /** 00099 * @brief HAL SRAM 回调指针定义 00100 */ 00101 typedef void (*pSRAM_CallbackTypeDef)(SRAM_HandleTypeDef *hsram); 00102 typedef void (*pSRAM_DmaCallbackTypeDef)(DMA_HandleTypeDef *hdma); 00103 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */ 00104 /** 00105 * @} 00106 */ 00107 00108 /* 导出的常量 --------------------------------------------------------*/ 00109 /* 导出的宏 ------------------------------------------------------------*/ 00110 00111 /** @defgroup SRAM_Exported_Macros SRAM 导出的宏 00112 * @{ 00113 */ 00114 00115 /** @brief 重置 SRAM 句柄状态 00116 * @param __HANDLE__ SRAM 句柄 00117 * @retval 无 00118 */ 00119 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1) 00120 #define __HAL_SRAM_RESET_HANDLE_STATE(__HANDLE__) do { \ 00121 (__HANDLE__)->State = HAL_SRAM_STATE_RESET; \ 00122 (__HANDLE__)->MspInitCallback = NULL; \ 00123 (__HANDLE__)->MspDeInitCallback = NULL; \ 00124 } while(0) 00125 #else 00126 #define __HAL_SRAM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SRAM_STATE_RESET) 00127 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */ 00128 00129 /** 00130 * @} 00131 */ 00132 00133 /* 导出的函数 --------------------------------------------------------*/ 00134 /** @addtogroup SRAM_Exported_Functions SRAM 导出的函数 00135 * @{ 00136 */ 00137 00138 /** @addtogroup SRAM_Exported_Functions_Group1 初始化和反初始化函数 00139 * @{ 00140 */ 00141 00142 /* 初始化/反初始化函数 ********************************/ 00143 HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, 00144 FMC_NORSRAM_TimingTypeDef *ExtTiming); 00145 HAL_StatusTypeDef HAL_SRAM_DeInit(SRAM_HandleTypeDef *hsram); 00146 void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram); 00147 void HAL_SRAM_MspDeInit(SRAM_HandleTypeDef *hsram); 00148 00149 /** 00150 * @} 00151 */ 00152 00153 /** @addtogroup SRAM_Exported_Functions_Group2 输入输出和内存控制函数 00154 * @{ 00155 */ 00156 00157 /* I/O 操作函数 ***************************************************/ 00158 HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer, 00159 uint32_t BufferSize); 00160 HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer, 00161 uint32_t BufferSize); 00162 HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer, 00163 uint32_t BufferSize); 00164 HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer, 00165 uint32_t BufferSize); 00166 HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, 00167 uint32_t BufferSize); 00168 HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, 00169 uint32_t BufferSize); 00170 HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, 00171 uint32_t BufferSize); 00172 HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, 00173 uint32_t BufferSize); 00174 00175 void HAL_SRAM_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma); 00176 void HAL_SRAM_DMA_XferErrorCallback(DMA_HandleTypeDef *hdma); 00177 00178 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1) 00179 /* SRAM 回调注册/注销 */ 00180 HAL_StatusTypeDef HAL_SRAM_RegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, 00181 pSRAM_CallbackTypeDef pCallback); 00182 HAL_StatusTypeDef HAL_SRAM_UnRegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId); 00183 HAL_StatusTypeDef HAL_SRAM_RegisterDmaCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, 00184 pSRAM_DmaCallbackTypeDef pCallback); 00185