STM CMSIS
stm32f4xx_hal_flash.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F4xx_HAL_FLASH_H
40 #define __STM32F4xx_HAL_FLASH_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f4xx_hal_def.h"
48 
57 /* Exported types ------------------------------------------------------------*/
65 typedef enum
66 {
67  FLASH_PROC_NONE = 0U,
68  FLASH_PROC_SECTERASE,
69  FLASH_PROC_MASSERASE,
70  FLASH_PROC_PROGRAM
72 
76 typedef struct
77 {
78  __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*Internal variable to indicate which procedure is ongoing or not in IT context*/
79 
80  __IO uint32_t NbSectorsToErase; /*Internal variable to save the remaining sectors to erase in IT context*/
81 
82  __IO uint8_t VoltageForErase; /*Internal variable to provide voltage range selected by user in IT context*/
83 
84  __IO uint32_t Sector; /*Internal variable to define the current sector which is erasing*/
85 
86  __IO uint32_t Bank; /*Internal variable to save current bank selected during mass erase*/
87 
88  __IO uint32_t Address; /*Internal variable to save address selected for program*/
89 
90  HAL_LockTypeDef Lock; /* FLASH locking object */
91 
92  __IO uint32_t ErrorCode; /* FLASH error code */
93 
95 
100 /* Exported constants --------------------------------------------------------*/
108 #define HAL_FLASH_ERROR_NONE ((uint32_t)0x00000000U)
109 #define HAL_FLASH_ERROR_RD ((uint32_t)0x00000001U)
110 #define HAL_FLASH_ERROR_PGS ((uint32_t)0x00000002U)
111 #define HAL_FLASH_ERROR_PGP ((uint32_t)0x00000004U)
112 #define HAL_FLASH_ERROR_PGA ((uint32_t)0x00000008U)
113 #define HAL_FLASH_ERROR_WRP ((uint32_t)0x00000010U)
114 #define HAL_FLASH_ERROR_OPERATION ((uint32_t)0x00000020U)
122 #define FLASH_TYPEPROGRAM_BYTE ((uint32_t)0x00U)
123 #define FLASH_TYPEPROGRAM_HALFWORD ((uint32_t)0x01U)
124 #define FLASH_TYPEPROGRAM_WORD ((uint32_t)0x02U)
125 #define FLASH_TYPEPROGRAM_DOUBLEWORD ((uint32_t)0x03U)
134 #define FLASH_FLAG_EOP FLASH_SR_EOP
135 #define FLASH_FLAG_OPERR FLASH_SR_SOP
136 #define FLASH_FLAG_WRPERR FLASH_SR_WRPERR
137 #define FLASH_FLAG_PGAERR FLASH_SR_PGAERR
138 #define FLASH_FLAG_PGPERR FLASH_SR_PGPERR
139 #define FLASH_FLAG_PGSERR FLASH_SR_PGSERR
140 #define FLASH_FLAG_RDERR ((uint32_t)0x00000100U)
141 #define FLASH_FLAG_BSY FLASH_SR_BSY
150 #define FLASH_IT_EOP FLASH_CR_EOPIE
151 #define FLASH_IT_ERR ((uint32_t)0x02000000U)
159 #define FLASH_PSIZE_BYTE ((uint32_t)0x00000000U)
160 #define FLASH_PSIZE_HALF_WORD ((uint32_t)0x00000100U)
161 #define FLASH_PSIZE_WORD ((uint32_t)0x00000200U)
162 #define FLASH_PSIZE_DOUBLE_WORD ((uint32_t)0x00000300U)
163 #define CR_PSIZE_MASK ((uint32_t)0xFFFFFCFFU)
164 
171 #define RDP_KEY ((uint16_t)0x00A5U)
172 #define FLASH_KEY1 ((uint32_t)0x45670123U)
173 #define FLASH_KEY2 ((uint32_t)0xCDEF89ABU)
174 #define FLASH_OPT_KEY1 ((uint32_t)0x08192A3BU)
175 #define FLASH_OPT_KEY2 ((uint32_t)0x4C5D6E7FU)
176 
184 /* Exported macro ------------------------------------------------------------*/
194 #define __HAL_FLASH_SET_LATENCY(__LATENCY__) (*(__IO uint8_t *)ACR_BYTE0_ADDRESS = (uint8_t)(__LATENCY__))
195 
201 #define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))
202 
207 #define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTEN)
208 
213 #define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTEN))
214 
219 #define __HAL_FLASH_INSTRUCTION_CACHE_ENABLE() (FLASH->ACR |= FLASH_ACR_ICEN)
220 
225 #define __HAL_FLASH_INSTRUCTION_CACHE_DISABLE() (FLASH->ACR &= (~FLASH_ACR_ICEN))
226 
231 #define __HAL_FLASH_DATA_CACHE_ENABLE() (FLASH->ACR |= FLASH_ACR_DCEN)
232 
237 #define __HAL_FLASH_DATA_CACHE_DISABLE() (FLASH->ACR &= (~FLASH_ACR_DCEN))
238 
244 #define __HAL_FLASH_INSTRUCTION_CACHE_RESET() do {FLASH->ACR |= FLASH_ACR_ICRST; \
245  FLASH->ACR &= ~FLASH_ACR_ICRST; \
246  }while(0)
247 
253 #define __HAL_FLASH_DATA_CACHE_RESET() do {FLASH->ACR |= FLASH_ACR_DCRST; \
254  FLASH->ACR &= ~FLASH_ACR_DCRST; \
255  }while(0)
256 
264 #define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) (FLASH->CR |= (__INTERRUPT__))
265 
274 #define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) (FLASH->CR &= ~(uint32_t)(__INTERRUPT__))
275 
290 #define __HAL_FLASH_GET_FLAG(__FLAG__) ((FLASH->SR & (__FLAG__))==(__FLAG__))
291 
305 #define __HAL_FLASH_CLEAR_FLAG(__FLAG__) (FLASH->SR = (__FLAG__))
306 
310 /* Include FLASH HAL Extension module */
311 #include "stm32f4xx_hal_flash_ex.h"
313 
314 /* Exported functions --------------------------------------------------------*/
321 /* Program operation functions ***********************************************/
322 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
323 HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
324 /* FLASH IRQ handler method */
325 void HAL_FLASH_IRQHandler(void);
326 /* Callbacks in non blocking modes */
327 void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
328 void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
336 /* Peripheral Control functions **********************************************/
337 HAL_StatusTypeDef HAL_FLASH_Unlock(void);
338 HAL_StatusTypeDef HAL_FLASH_Lock(void);
339 HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
340 HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
341 /* Option bytes control */
342 HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);
350 /* Peripheral State functions ************************************************/
351 uint32_t HAL_FLASH_GetError(void);
352 HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
360 /* Private types -------------------------------------------------------------*/
361 /* Private variables ---------------------------------------------------------*/
369 /* Private constants ---------------------------------------------------------*/
377 #define ACR_BYTE0_ADDRESS ((uint32_t)0x40023C00U)
378 
381 #define OPTCR_BYTE0_ADDRESS ((uint32_t)0x40023C14U)
382 
385 #define OPTCR_BYTE1_ADDRESS ((uint32_t)0x40023C15U)
386 
389 #define OPTCR_BYTE2_ADDRESS ((uint32_t)0x40023C16U)
390 
393 #define OPTCR_BYTE3_ADDRESS ((uint32_t)0x40023C17U)
394 
399 /* Private macros ------------------------------------------------------------*/
407 #define IS_FLASH_TYPEPROGRAM(VALUE)(((VALUE) == FLASH_TYPEPROGRAM_BYTE) || \
408  ((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \
409  ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \
410  ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD))
411 
419 /* Private functions ---------------------------------------------------------*/
436 #ifdef __cplusplus
437 }
438 #endif
439 
440 #endif /* __STM32F4xx_HAL_FLASH_H */
441 
442 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
This file contains HAL common defines, enumeration, macros and structures definitions.
Header file of FLASH RAMFUNC driver.
FLASH handle Structure definition.
Definition: stm32f4xx_hal_flash.h:76
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:57
#define __IO
Definition: core_cm0.h:213
Header file of FLASH HAL Extension module.
FLASH_ProcedureTypeDef
FLASH Procedure structure definition.
Definition: stm32f4xx_hal_flash.h:65
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32f4xx_hal_def.h:68