cantata
stm32f1xx_hal_flash.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef __STM32F1xx_HAL_FLASH_H
22 #define __STM32F1xx_HAL_FLASH_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32f1xx_hal_def.h"
30 
42 #define FLASH_TIMEOUT_VALUE 50000U /* 50 s */
43 
51 #define IS_FLASH_TYPEPROGRAM(VALUE) (((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \
52  ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \
53  ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD))
54 
55 #if defined(FLASH_ACR_LATENCY)
56 #define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \
57  ((__LATENCY__) == FLASH_LATENCY_1) || \
58  ((__LATENCY__) == FLASH_LATENCY_2))
59 
60 #else
61 #define IS_FLASH_LATENCY(__LATENCY__) ((__LATENCY__) == FLASH_LATENCY_0)
62 #endif /* FLASH_ACR_LATENCY */
63 
67 /* Exported types ------------------------------------------------------------*/
75 typedef enum
76 {
77  FLASH_PROC_NONE = 0U,
78  FLASH_PROC_PAGEERASE = 1U,
79  FLASH_PROC_MASSERASE = 2U,
80  FLASH_PROC_PROGRAMHALFWORD = 3U,
81  FLASH_PROC_PROGRAMWORD = 4U,
82  FLASH_PROC_PROGRAMDOUBLEWORD = 5U
84 
88 typedef struct
89 {
90  __IO FLASH_ProcedureTypeDef ProcedureOnGoing;
92  __IO uint32_t DataRemaining;
94  __IO uint32_t Address;
96  __IO uint64_t Data;
100  __IO uint32_t ErrorCode;
103 
108 /* Exported constants --------------------------------------------------------*/
117 #define HAL_FLASH_ERROR_NONE 0x00U
118 #define HAL_FLASH_ERROR_PROG 0x01U
119 #define HAL_FLASH_ERROR_WRP 0x02U
120 #define HAL_FLASH_ERROR_OPTV 0x04U
129 #define FLASH_TYPEPROGRAM_HALFWORD 0x01U
130 #define FLASH_TYPEPROGRAM_WORD 0x02U
131 #define FLASH_TYPEPROGRAM_DOUBLEWORD 0x03U
137 #if defined(FLASH_ACR_LATENCY)
138 
141 #define FLASH_LATENCY_0 0x00000000U
142 #define FLASH_LATENCY_1 FLASH_ACR_LATENCY_0
143 #define FLASH_LATENCY_2 FLASH_ACR_LATENCY_1
149 #else
150 
153 #define FLASH_LATENCY_0 0x00000000U
159 #endif /* FLASH_ACR_LATENCY */
160 
164 /* Exported macro ------------------------------------------------------------*/
165 
182 #define __HAL_FLASH_HALF_CYCLE_ACCESS_ENABLE() (FLASH->ACR |= FLASH_ACR_HLFCYA)
183 
190 #define __HAL_FLASH_HALF_CYCLE_ACCESS_DISABLE() (FLASH->ACR &= (~FLASH_ACR_HLFCYA))
191 
196 #if defined(FLASH_ACR_LATENCY)
197 
208 #define __HAL_FLASH_SET_LATENCY(__LATENCY__) (FLASH->ACR = (FLASH->ACR&(~FLASH_ACR_LATENCY)) | (__LATENCY__))
209 
210 
216 #define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))
217 
222 #endif /* FLASH_ACR_LATENCY */
223 
231 #define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTBE)
232 
237 #define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTBE))
238 
247 /* Include FLASH HAL Extended module */
248 #include "stm32f1xx_hal_flash_ex.h"
249 
250 /* Exported functions --------------------------------------------------------*/
258 /* IO operation functions *****************************************************/
259 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
260 HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
261 
262 /* FLASH IRQ handler function */
263 void HAL_FLASH_IRQHandler(void);
264 /* Callbacks in non blocking modes */
265 void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
266 void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
267 
275 /* Peripheral Control functions ***********************************************/
276 HAL_StatusTypeDef HAL_FLASH_Unlock(void);
277 HAL_StatusTypeDef HAL_FLASH_Lock(void);
278 HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
279 HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
280 void HAL_FLASH_OB_Launch(void);
281 
289 /* Peripheral State and Error functions ***************************************/
290 uint32_t HAL_FLASH_GetError(void);
291 
300 /* Private function -------------------------------------------------*/
304 HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
305 #if defined(FLASH_BANK2_END)
306 HAL_StatusTypeDef FLASH_WaitForLastOperationBank2(uint32_t Timeout);
307 #endif /* FLASH_BANK2_END */
308 
321 #ifdef __cplusplus
322 }
323 #endif
324 
325 #endif /* __STM32F1xx_HAL_FLASH_H */
326 
327 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
328 
This file contains HAL common defines, enumeration, macros and structures definitions.
__IO uint64_t Data
Definition: stm32f1xx_hal_flash.h:96
__IO uint32_t DataRemaining
Definition: stm32f1xx_hal_flash.h:92
#define __IO
Definition: core_armv8mbl.h:196
HAL_LockTypeDef Lock
Definition: stm32f1xx_hal_flash.h:98
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32f1xx_hal_def.h:50
Header file of Flash HAL Extended module.
__IO FLASH_ProcedureTypeDef ProcedureOnGoing
Definition: stm32f1xx_hal_flash.h:90
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f1xx_hal_def.h:39
__IO uint32_t Address
Definition: stm32f1xx_hal_flash.h:94
__IO uint32_t ErrorCode
Definition: stm32f1xx_hal_flash.h:100
FLASH_ProcedureTypeDef
FLASH Procedure structure definition.
Definition: stm32f1xx_hal_flash.h:75
FLASH handle Structure definition.
Definition: stm32f1xx_hal_flash.h:88