STM32L443xx HAL User Manual
stm32l4xx_hal_sram.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_hal_sram.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of SRAM HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in 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 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32L4xx_HAL_SRAM_H
00021 #define STM32L4xx_HAL_SRAM_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 #if defined(FMC_BANK1)
00028 
00029 /* Includes ------------------------------------------------------------------*/
00030 #include "stm32l4xx_ll_fmc.h"
00031 
00032 /** @addtogroup STM32L4xx_HAL_Driver
00033   * @{
00034   */
00035 /** @addtogroup SRAM
00036   * @{
00037   */
00038 
00039 /* Exported typedef ----------------------------------------------------------*/
00040 
00041 /** @defgroup SRAM_Exported_Types SRAM Exported Types
00042   * @{
00043   */
00044 /**
00045   * @brief  HAL SRAM State structures definition
00046   */
00047 typedef enum
00048 {
00049   HAL_SRAM_STATE_RESET     = 0x00U,  /*!< SRAM not yet initialized or disabled           */
00050   HAL_SRAM_STATE_READY     = 0x01U,  /*!< SRAM initialized and ready for use             */
00051   HAL_SRAM_STATE_BUSY      = 0x02U,  /*!< SRAM internal process is ongoing               */
00052   HAL_SRAM_STATE_ERROR     = 0x03U,  /*!< SRAM error state                               */
00053   HAL_SRAM_STATE_PROTECTED = 0x04U   /*!< SRAM peripheral NORSRAM device write protected */
00054 
00055 } HAL_SRAM_StateTypeDef;
00056 
00057 /**
00058   * @brief  SRAM handle Structure definition
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;  /*!< Register base address                        */
00067 
00068   FMC_NORSRAM_EXTENDED_TypeDef  *Extended;  /*!< Extended mode register base address          */
00069 
00070   FMC_NORSRAM_InitTypeDef       Init;       /*!< SRAM device control configuration parameters */
00071 
00072   HAL_LockTypeDef               Lock;       /*!< SRAM locking object                          */
00073 
00074   __IO HAL_SRAM_StateTypeDef    State;      /*!< SRAM device access state                     */
00075 
00076   DMA_HandleTypeDef             *hdma;      /*!< Pointer DMA handler                          */
00077 
00078 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
00079   void (* MspInitCallback)(struct __SRAM_HandleTypeDef *hsram);               /*!< SRAM Msp Init callback              */
00080   void (* MspDeInitCallback)(struct __SRAM_HandleTypeDef *hsram);             /*!< SRAM Msp DeInit callback            */
00081   void (* DmaXferCpltCallback)(DMA_HandleTypeDef *hdma);                      /*!< SRAM DMA Xfer Complete callback     */
00082   void (* DmaXferErrorCallback)(DMA_HandleTypeDef *hdma);                     /*!< SRAM DMA Xfer Error callback        */
00083 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
00084 } SRAM_HandleTypeDef;
00085 
00086 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
00087 /**
00088   * @brief  HAL SRAM Callback ID enumeration definition
00089   */
00090 typedef enum
00091 {
00092   HAL_SRAM_MSP_INIT_CB_ID       = 0x00U,  /*!< SRAM MspInit Callback ID           */
00093   HAL_SRAM_MSP_DEINIT_CB_ID     = 0x01U,  /*!< SRAM MspDeInit Callback ID         */
00094   HAL_SRAM_DMA_XFER_CPLT_CB_ID  = 0x02U,  /*!< SRAM DMA Xfer Complete Callback ID */
00095   HAL_SRAM_DMA_XFER_ERR_CB_ID   = 0x03U   /*!< SRAM DMA Xfer Complete Callback ID */
00096 } HAL_SRAM_CallbackIDTypeDef;
00097 
00098 /**
00099   * @brief  HAL SRAM Callback pointer definition
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 /* Exported constants --------------------------------------------------------*/
00109 /* Exported macro ------------------------------------------------------------*/
00110 
00111 /** @defgroup SRAM_Exported_Macros SRAM Exported Macros
00112   * @{
00113   */
00114 
00115 /** @brief Reset SRAM handle state
00116   * @param  __HANDLE__ SRAM handle
00117   * @retval None
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 /* Exported functions --------------------------------------------------------*/
00134 /** @addtogroup SRAM_Exported_Functions SRAM Exported Functions
00135   * @{
00136   */
00137 
00138 /** @addtogroup SRAM_Exported_Functions_Group1 Initialization and de-initialization functions
00139   * @{
00140   */
00141 
00142 /* Initialization/de-initialization functions  ********************************/
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 Input Output and memory control functions
00154   * @{
00155   */
00156 
00157 /* I/O operation functions  ***************************************************/
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 callback registering/unregistering */
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 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
00186 
00187 /**
00188   * @}
00189   */
00190 
00191 /** @addtogroup SRAM_Exported_Functions_Group3 Control functions
00192   * @{
00193   */
00194 
00195 /* SRAM Control functions  ****************************************************/
00196 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Enable(SRAM_HandleTypeDef *hsram);
00197 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Disable(SRAM_HandleTypeDef *hsram);
00198 
00199 /**
00200   * @}
00201   */
00202 
00203 /** @addtogroup SRAM_Exported_Functions_Group4 Peripheral State functions
00204   * @{
00205   */
00206 
00207 /* SRAM  State functions ******************************************************/
00208 HAL_SRAM_StateTypeDef HAL_SRAM_GetState(SRAM_HandleTypeDef *hsram);
00209 
00210 /**
00211   * @}
00212   */
00213 
00214 /**
00215   * @}
00216   */
00217 
00218 /**
00219   * @}
00220   */
00221 
00222 /**
00223   * @}
00224   */
00225 
00226 #endif /* FMC_BANK1 */
00227 
00228 #ifdef __cplusplus
00229 }
00230 #endif
00231 
00232 #endif /* STM32L4xx_HAL_SRAM_H */