xref: /btstack/port/stm32-f4discovery-usb/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sram.h (revision a8f7f3fcbcd51f8d2e92aca076b6a9f812db358c)
1 /**
2   ******************************************************************************
3   * @file    stm32f4xx_hal_sram.h
4   * @author  MCD Application Team
5   * @brief   Header file of SRAM HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
10   * All rights reserved.</center></h2>
11   *
12   * This software component is licensed by ST under BSD 3-Clause license,
13   * the "License"; You may not use this file except in compliance with the
14   * License. You may obtain a copy of the License at:
15   *                        opensource.org/licenses/BSD-3-Clause
16   *
17   ******************************************************************************
18   */
19 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef __STM32F4xx_HAL_SRAM_H
22 #define __STM32F4xx_HAL_SRAM_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F412Zx) ||\
30     defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F413xx) || defined(STM32F423xx)
31   #include "stm32f4xx_ll_fsmc.h"
32 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F413xx || STM32F423xx */
33 
34 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
35  defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
36   #include "stm32f4xx_ll_fmc.h"
37 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
38 
39 
40 /** @addtogroup STM32F4xx_HAL_Driver
41   * @{
42   */
43 
44 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
45     defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
46     defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||\
47     defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F413xx) || defined(STM32F423xx)
48 
49 /** @addtogroup SRAM
50   * @{
51   */
52 
53 /* Exported typedef ----------------------------------------------------------*/
54 
55 /** @defgroup SRAM_Exported_Types SRAM Exported Types
56   * @{
57   */
58 /**
59   * @brief  HAL SRAM State structures definition
60   */
61 typedef enum
62 {
63   HAL_SRAM_STATE_RESET     = 0x00U,  /*!< SRAM not yet initialized or disabled           */
64   HAL_SRAM_STATE_READY     = 0x01U,  /*!< SRAM initialized and ready for use             */
65   HAL_SRAM_STATE_BUSY      = 0x02U,  /*!< SRAM internal process is ongoing               */
66   HAL_SRAM_STATE_ERROR     = 0x03U,  /*!< SRAM error state                               */
67   HAL_SRAM_STATE_PROTECTED = 0x04U   /*!< SRAM peripheral NORSRAM device write protected */
68 
69 } HAL_SRAM_StateTypeDef;
70 
71 /**
72   * @brief  SRAM handle Structure definition
73   */
74 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
75 typedef struct __SRAM_HandleTypeDef
76 #else
77 typedef struct
78 #endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
79 {
80   FMC_NORSRAM_TypeDef           *Instance;  /*!< Register base address                        */
81 
82   FMC_NORSRAM_EXTENDED_TypeDef  *Extended;  /*!< Extended mode register base address          */
83 
84   FMC_NORSRAM_InitTypeDef       Init;       /*!< SRAM device control configuration parameters */
85 
86   HAL_LockTypeDef               Lock;       /*!< SRAM locking object                          */
87 
88   __IO HAL_SRAM_StateTypeDef    State;      /*!< SRAM device access state                     */
89 
90   DMA_HandleTypeDef             *hdma;      /*!< Pointer DMA handler                          */
91 
92 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
93   void  (* MspInitCallback)        ( struct __SRAM_HandleTypeDef * hsram);    /*!< SRAM Msp Init callback              */
94   void  (* MspDeInitCallback)      ( struct __SRAM_HandleTypeDef * hsram);    /*!< SRAM Msp DeInit callback            */
95   void  (* DmaXferCpltCallback)    ( DMA_HandleTypeDef * hdma);               /*!< SRAM DMA Xfer Complete callback     */
96   void  (* DmaXferErrorCallback)   ( DMA_HandleTypeDef * hdma);               /*!< SRAM DMA Xfer Error callback        */
97 #endif
98 } SRAM_HandleTypeDef;
99 
100 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
101 /**
102   * @brief  HAL SRAM Callback ID enumeration definition
103   */
104 typedef enum
105 {
106   HAL_SRAM_MSP_INIT_CB_ID       = 0x00U,  /*!< SRAM MspInit Callback ID           */
107   HAL_SRAM_MSP_DEINIT_CB_ID     = 0x01U,  /*!< SRAM MspDeInit Callback ID         */
108   HAL_SRAM_DMA_XFER_CPLT_CB_ID  = 0x02U,  /*!< SRAM DMA Xfer Complete Callback ID */
109   HAL_SRAM_DMA_XFER_ERR_CB_ID   = 0x03U   /*!< SRAM DMA Xfer Complete Callback ID */
110 }HAL_SRAM_CallbackIDTypeDef;
111 
112 /**
113   * @brief  HAL SRAM Callback pointer definition
114   */
115 typedef void (*pSRAM_CallbackTypeDef)(SRAM_HandleTypeDef *hsram);
116 typedef void (*pSRAM_DmaCallbackTypeDef)(DMA_HandleTypeDef *hdma);
117 #endif
118 /**
119   * @}
120   */
121 
122 /* Exported constants --------------------------------------------------------*/
123 /* Exported macro ------------------------------------------------------------*/
124 
125 /** @defgroup SRAM_Exported_Macros SRAM Exported Macros
126   * @{
127   */
128 /** @brief Reset SRAM handle state
129   * @param  __HANDLE__ SRAM handle
130   * @retval None
131   */
132 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
133 #define __HAL_SRAM_RESET_HANDLE_STATE(__HANDLE__)         do {                                             \
134                                                                (__HANDLE__)->State = HAL_SRAM_STATE_RESET; \
135                                                                (__HANDLE__)->MspInitCallback = NULL;       \
136                                                                (__HANDLE__)->MspDeInitCallback = NULL;     \
137                                                              } while(0)
138 #else
139 #define __HAL_SRAM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SRAM_STATE_RESET)
140 #endif
141 
142 /**
143   * @}
144   */
145 /* Exported functions --------------------------------------------------------*/
146 
147 /** @addtogroup SRAM_Exported_Functions
148  *  @{
149  */
150 
151 /** @addtogroup SRAM_Exported_Functions_Group1
152  *  @{
153  */
154 /* Initialization/de-initialization functions  **********************************/
155 HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming);
156 HAL_StatusTypeDef HAL_SRAM_DeInit(SRAM_HandleTypeDef *hsram);
157 void              HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram);
158 void              HAL_SRAM_MspDeInit(SRAM_HandleTypeDef *hsram);
159 
160 void              HAL_SRAM_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma);
161 void              HAL_SRAM_DMA_XferErrorCallback(DMA_HandleTypeDef *hdma);
162 /**
163   * @}
164   */
165 
166 /** @addtogroup SRAM_Exported_Functions_Group2
167  *  @{
168  */
169 /* I/O operation functions  *****************************************************/
170 HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize);
171 HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize);
172 HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize);
173 HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize);
174 HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize);
175 HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize);
176 HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize);
177 HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize);
178 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
179 /* SRAM callback registering/unregistering */
180 HAL_StatusTypeDef HAL_SRAM_RegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_CallbackTypeDef pCallback);
181 HAL_StatusTypeDef HAL_SRAM_UnRegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId);
182 HAL_StatusTypeDef HAL_SRAM_RegisterDmaCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_DmaCallbackTypeDef pCallback);
183 #endif
184 /**
185   * @}
186   */
187 
188 /** @addtogroup SRAM_Exported_Functions_Group3
189  *  @{
190  */
191 /* SRAM Control functions  ******************************************************/
192 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Enable(SRAM_HandleTypeDef *hsram);
193 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Disable(SRAM_HandleTypeDef *hsram);
194 /**
195   * @}
196   */
197 
198 /** @addtogroup SRAM_Exported_Functions_Group4
199  *  @{
200  */
201 /* SRAM State functions *********************************************************/
202 HAL_SRAM_StateTypeDef HAL_SRAM_GetState(SRAM_HandleTypeDef *hsram);
203 /**
204   * @}
205   */
206 
207 /**
208   * @}
209   */
210 
211 /* Private types -------------------------------------------------------------*/
212 /* Private variables ---------------------------------------------------------*/
213 /* Private constants ---------------------------------------------------------*/
214 /* Private macros ------------------------------------------------------------*/
215 /* Private functions ---------------------------------------------------------*/
216 /**
217   * @}
218   */
219 
220 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\
221           STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx ||\
222           STM32F412Vx || STM32F412Rx || STM32F413xx || STM32F423xx */
223 /**
224   * @}
225   */
226 #ifdef __cplusplus
227 }
228 #endif
229 
230 #endif /* __STM32F4xx_HAL_SRAM_H */
231 
232 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
233