STM32F4xx HAL Driver
master
STM32CubeF4 HAL / LL Drivers API Reference
Toggle main menu visibility
Loading...
Searching...
No Matches
stm32f4xx_hal_flash_ex.h
Go to the documentation of this file.
1
17
18
/* Define to prevent recursive inclusion -------------------------------------*/
19
#ifndef __STM32F4xx_HAL_FLASH_EX_H
20
#define __STM32F4xx_HAL_FLASH_EX_H
21
22
#ifdef __cplusplus
23
extern
"C"
{
24
#endif
25
26
/* Includes ------------------------------------------------------------------*/
27
#include "
stm32f4xx_hal_def.h
"
28
32
36
37
/* Exported types ------------------------------------------------------------*/
41
45
typedef
struct
46
{
47
uint32_t
TypeErase
;
49
50
uint32_t
Banks
;
52
53
uint32_t
Sector
;
55
56
uint32_t
NbSectors
;
58
59
uint32_t
VoltageRange
;
61
62
}
FLASH_EraseInitTypeDef
;
63
67
typedef
struct
68
{
69
uint32_t
OptionType
;
71
72
uint32_t
WRPState
;
74
75
uint32_t
WRPSector
;
77
78
uint32_t
Banks
;
80
81
uint32_t
RDPLevel
;
83
84
uint32_t
BORLevel
;
86
87
uint8_t
USERConfig
;
88
89
}
FLASH_OBProgramInitTypeDef
;
90
94
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
95
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
96
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) ||\
97
defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||\
98
defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
99
typedef
struct
100
{
101
uint32_t OptionType;
103
104
uint32_t PCROPState;
106
107
#if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
108
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
109
uint16_t Sectors;
111
#endif
/* STM32F401xC || STM32F401xE || STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx ||\
112
STM32F412Cx || STM32F413xx || STM32F423xx */
113
114
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
115
uint32_t Banks;
117
118
uint16_t SectorsBank1;
120
121
uint16_t SectorsBank2;
123
124
uint8_t BootConfig;
126
127
#endif
/*STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
128
} FLASH_AdvOBProgramInitTypeDef;
129
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F410xx || STM32F411xE || STM32F446xx ||
130
STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
134
135
/* Exported constants --------------------------------------------------------*/
136
140
144
#define FLASH_TYPEERASE_SECTORS 0x00000000U
145
#define FLASH_TYPEERASE_MASSERASE 0x00000001U
149
153
#define FLASH_VOLTAGE_RANGE_1 0x00000000U
154
#define FLASH_VOLTAGE_RANGE_2 0x00000001U
155
#define FLASH_VOLTAGE_RANGE_3 0x00000002U
156
#define FLASH_VOLTAGE_RANGE_4 0x00000003U
160
164
#define OB_WRPSTATE_DISABLE 0x00000000U
165
#define OB_WRPSTATE_ENABLE 0x00000001U
169
173
#define OPTIONBYTE_WRP 0x00000001U
174
#define OPTIONBYTE_RDP 0x00000002U
175
#define OPTIONBYTE_USER 0x00000004U
176
#define OPTIONBYTE_BOR 0x00000008U
180
184
#define OB_RDP_LEVEL_0 ((uint8_t)0xAA)
185
#define OB_RDP_LEVEL_1 ((uint8_t)0x55)
186
#define OB_RDP_LEVEL_2 ((uint8_t)0xCC)
191
195
#define OB_IWDG_SW ((uint8_t)0x20)
196
#define OB_IWDG_HW ((uint8_t)0x00)
200
204
#define OB_STOP_NO_RST ((uint8_t)0x40)
205
#define OB_STOP_RST ((uint8_t)0x00)
209
210
214
#define OB_STDBY_NO_RST ((uint8_t)0x80)
215
#define OB_STDBY_RST ((uint8_t)0x00)
219
223
#define OB_BOR_LEVEL3 ((uint8_t)0x00)
224
#define OB_BOR_LEVEL2 ((uint8_t)0x04)
225
#define OB_BOR_LEVEL1 ((uint8_t)0x08)
226
#define OB_BOR_OFF ((uint8_t)0x0C)
230
231
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
232
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
233
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) ||\
234
defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||\
235
defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
239
#define OB_PCROP_STATE_DISABLE 0x00000000U
240
#define OB_PCROP_STATE_ENABLE 0x00000001U
244
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE ||\
245
STM32F410xx || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx ||\
246
STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
247
251
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
252
defined(STM32F469xx) || defined(STM32F479xx)
253
#define OPTIONBYTE_PCROP 0x00000001U
254
#define OPTIONBYTE_BOOTCONFIG 0x00000002U
255
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
256
257
#if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
258
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
259
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||\
260
defined(STM32F423xx)
261
#define OPTIONBYTE_PCROP 0x00000001U
262
#endif
/* STM32F401xC || STM32F401xE || STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx ||
263
STM32F413xx || STM32F423xx */
267
271
/*------------------------- STM32F42xxx/STM32F43xxx/STM32F446xx/STM32F469xx/STM32F479xx ----------------------*/
272
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
273
defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
274
#define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS
275
#define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS
276
#define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS
277
#define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS
278
#define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS
279
#define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS
280
#define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS
281
#define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS
282
#define FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS
283
#define FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS
284
#define FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS
285
#define FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS
286
#define FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS
287
#define FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS
288
#define FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS
289
#define FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS
290
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
291
/*--------------------------------------------------------------------------------------------------------------*/
292
293
/*-------------------------- STM32F40xxx/STM32F41xxx/STM32F401xx/STM32F411xx/STM32F423xx -----------------------*/
294
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
295
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
296
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F412Zx) || defined(STM32F412Vx) ||\
297
defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
298
299
#define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS
300
#define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS
301
#define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS
302
#define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS
303
#define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS
304
#define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS
305
#define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS
306
#define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS
307
#endif
/* STM32F40xxx || STM32F41xxx || STM32F401xx || STM32F410xx || STM32F411xE || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx ||
308
STM32F413xx || STM32F423xx */
309
/*--------------------------------------------------------------------------------------------------------------*/
310
314
315
319
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
320
defined(STM32F469xx) || defined(STM32F479xx)
321
#define FLASH_BANK_1 1U
322
#define FLASH_BANK_2 2U
323
#define FLASH_BANK_BOTH ((uint32_t)FLASH_BANK_1 | FLASH_BANK_2)
324
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
325
326
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
327
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
328
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
329
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||\
330
defined(STM32F423xx)
331
#define FLASH_BANK_1 1U
332
#endif
/* STM32F40xxx || STM32F41xxx || STM32F401xx || STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx
333
STM32F413xx || STM32F423xx */
337
341
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
342
defined(STM32F469xx) || defined(STM32F479xx)
343
#define FLASH_MER_BIT (FLASH_CR_MER1 | FLASH_CR_MER2)
344
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
345
346
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
347
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
348
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
349
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||\
350
defined(STM32F423xx)
351
#define FLASH_MER_BIT (FLASH_CR_MER)
352
#endif
/* STM32F40xxx || STM32F41xxx || STM32F401xx || STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx
353
STM32F413xx || STM32F423xx */
357
361
/*-------------------------------------- STM32F42xxx/STM32F43xxx/STM32F469xx ------------------------------------*/
362
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
363
defined(STM32F469xx) || defined(STM32F479xx)
364
#define FLASH_SECTOR_0 0U
365
#define FLASH_SECTOR_1 1U
366
#define FLASH_SECTOR_2 2U
367
#define FLASH_SECTOR_3 3U
368
#define FLASH_SECTOR_4 4U
369
#define FLASH_SECTOR_5 5U
370
#define FLASH_SECTOR_6 6U
371
#define FLASH_SECTOR_7 7U
372
#define FLASH_SECTOR_8 8U
373
#define FLASH_SECTOR_9 9U
374
#define FLASH_SECTOR_10 10U
375
#define FLASH_SECTOR_11 11U
376
#define FLASH_SECTOR_12 12U
377
#define FLASH_SECTOR_13 13U
378
#define FLASH_SECTOR_14 14U
379
#define FLASH_SECTOR_15 15U
380
#define FLASH_SECTOR_16 16U
381
#define FLASH_SECTOR_17 17U
382
#define FLASH_SECTOR_18 18U
383
#define FLASH_SECTOR_19 19U
384
#define FLASH_SECTOR_20 20U
385
#define FLASH_SECTOR_21 21U
386
#define FLASH_SECTOR_22 22U
387
#define FLASH_SECTOR_23 23U
388
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
389
/*-----------------------------------------------------------------------------------------------------*/
390
391
/*-------------------------------------- STM32F413xx/STM32F423xx --------------------------------------*/
392
#if defined(STM32F413xx) || defined(STM32F423xx)
393
#define FLASH_SECTOR_0 0U
394
#define FLASH_SECTOR_1 1U
395
#define FLASH_SECTOR_2 2U
396
#define FLASH_SECTOR_3 3U
397
#define FLASH_SECTOR_4 4U
398
#define FLASH_SECTOR_5 5U
399
#define FLASH_SECTOR_6 6U
400
#define FLASH_SECTOR_7 7U
401
#define FLASH_SECTOR_8 8U
402
#define FLASH_SECTOR_9 9U
403
#define FLASH_SECTOR_10 10U
404
#define FLASH_SECTOR_11 11U
405
#define FLASH_SECTOR_12 12U
406
#define FLASH_SECTOR_13 13U
407
#define FLASH_SECTOR_14 14U
408
#define FLASH_SECTOR_15 15U
409
#endif
/* STM32F413xx || STM32F423xx */
410
/*-----------------------------------------------------------------------------------------------------*/
411
412
/*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/
413
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F412Zx) ||\
414
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx)
415
#define FLASH_SECTOR_0 0U
416
#define FLASH_SECTOR_1 1U
417
#define FLASH_SECTOR_2 2U
418
#define FLASH_SECTOR_3 3U
419
#define FLASH_SECTOR_4 4U
420
#define FLASH_SECTOR_5 5U
421
#define FLASH_SECTOR_6 6U
422
#define FLASH_SECTOR_7 7U
423
#define FLASH_SECTOR_8 8U
424
#define FLASH_SECTOR_9 9U
425
#define FLASH_SECTOR_10 10U
426
#define FLASH_SECTOR_11 11U
427
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
428
/*-----------------------------------------------------------------------------------------------------*/
429
430
/*--------------------------------------------- STM32F401xC -------------------------------------------*/
431
#if defined(STM32F401xC)
432
#define FLASH_SECTOR_0 0U
433
#define FLASH_SECTOR_1 1U
434
#define FLASH_SECTOR_2 2U
435
#define FLASH_SECTOR_3 3U
436
#define FLASH_SECTOR_4 4U
437
#define FLASH_SECTOR_5 5U
438
#endif
/* STM32F401xC */
439
/*-----------------------------------------------------------------------------------------------------*/
440
441
/*--------------------------------------------- STM32F410xx -------------------------------------------*/
442
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
443
#define FLASH_SECTOR_0 0U
444
#define FLASH_SECTOR_1 1U
445
#define FLASH_SECTOR_2 2U
446
#define FLASH_SECTOR_3 3U
447
#define FLASH_SECTOR_4 4U
448
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
449
/*-----------------------------------------------------------------------------------------------------*/
450
451
/*---------------------------------- STM32F401xE/STM32F411xE/STM32F446xx ------------------------------*/
452
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
453
#define FLASH_SECTOR_0 0U
454
#define FLASH_SECTOR_1 1U
455
#define FLASH_SECTOR_2 2U
456
#define FLASH_SECTOR_3 3U
457
#define FLASH_SECTOR_4 4U
458
#define FLASH_SECTOR_5 5U
459
#define FLASH_SECTOR_6 6U
460
#define FLASH_SECTOR_7 7U
461
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx */
462
/*-----------------------------------------------------------------------------------------------------*/
463
467
471
/*--------------------------- STM32F42xxx/STM32F43xxx/STM32F469xx/STM32F479xx -------------------------*/
472
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
473
defined(STM32F469xx) || defined(STM32F479xx)
474
#define OB_WRP_SECTOR_0 0x00000001U
475
#define OB_WRP_SECTOR_1 0x00000002U
476
#define OB_WRP_SECTOR_2 0x00000004U
477
#define OB_WRP_SECTOR_3 0x00000008U
478
#define OB_WRP_SECTOR_4 0x00000010U
479
#define OB_WRP_SECTOR_5 0x00000020U
480
#define OB_WRP_SECTOR_6 0x00000040U
481
#define OB_WRP_SECTOR_7 0x00000080U
482
#define OB_WRP_SECTOR_8 0x00000100U
483
#define OB_WRP_SECTOR_9 0x00000200U
484
#define OB_WRP_SECTOR_10 0x00000400U
485
#define OB_WRP_SECTOR_11 0x00000800U
486
#define OB_WRP_SECTOR_12 0x00000001U << 12U
487
#define OB_WRP_SECTOR_13 0x00000002U << 12U
488
#define OB_WRP_SECTOR_14 0x00000004U << 12U
489
#define OB_WRP_SECTOR_15 0x00000008U << 12U
490
#define OB_WRP_SECTOR_16 0x00000010U << 12U
491
#define OB_WRP_SECTOR_17 0x00000020U << 12U
492
#define OB_WRP_SECTOR_18 0x00000040U << 12U
493
#define OB_WRP_SECTOR_19 0x00000080U << 12U
494
#define OB_WRP_SECTOR_20 0x00000100U << 12U
495
#define OB_WRP_SECTOR_21 0x00000200U << 12U
496
#define OB_WRP_SECTOR_22 0x00000400U << 12U
497
#define OB_WRP_SECTOR_23 0x00000800U << 12U
498
#define OB_WRP_SECTOR_All 0x00000FFFU << 12U
499
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
500
/*-----------------------------------------------------------------------------------------------------*/
501
502
/*--------------------------------------- STM32F413xx/STM32F423xx -------------------------------------*/
503
#if defined(STM32F413xx) || defined(STM32F423xx)
504
#define OB_WRP_SECTOR_0 0x00000001U
505
#define OB_WRP_SECTOR_1 0x00000002U
506
#define OB_WRP_SECTOR_2 0x00000004U
507
#define OB_WRP_SECTOR_3 0x00000008U
508
#define OB_WRP_SECTOR_4 0x00000010U
509
#define OB_WRP_SECTOR_5 0x00000020U
510
#define OB_WRP_SECTOR_6 0x00000040U
511
#define OB_WRP_SECTOR_7 0x00000080U
512
#define OB_WRP_SECTOR_8 0x00000100U
513
#define OB_WRP_SECTOR_9 0x00000200U
514
#define OB_WRP_SECTOR_10 0x00000400U
515
#define OB_WRP_SECTOR_11 0x00000800U
516
#define OB_WRP_SECTOR_12 0x00001000U
517
#define OB_WRP_SECTOR_13 0x00002000U
518
#define OB_WRP_SECTOR_14 0x00004000U
519
#define OB_WRP_SECTOR_15 0x00004000U
520
#define OB_WRP_SECTOR_All 0x00007FFFU
521
#endif
/* STM32F413xx || STM32F423xx */
522
/*-----------------------------------------------------------------------------------------------------*/
523
524
/*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/
525
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F412Zx) ||\
526
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx)
527
#define OB_WRP_SECTOR_0 0x00000001U
528
#define OB_WRP_SECTOR_1 0x00000002U
529
#define OB_WRP_SECTOR_2 0x00000004U
530
#define OB_WRP_SECTOR_3 0x00000008U
531
#define OB_WRP_SECTOR_4 0x00000010U
532
#define OB_WRP_SECTOR_5 0x00000020U
533
#define OB_WRP_SECTOR_6 0x00000040U
534
#define OB_WRP_SECTOR_7 0x00000080U
535
#define OB_WRP_SECTOR_8 0x00000100U
536
#define OB_WRP_SECTOR_9 0x00000200U
537
#define OB_WRP_SECTOR_10 0x00000400U
538
#define OB_WRP_SECTOR_11 0x00000800U
539
#define OB_WRP_SECTOR_All 0x00000FFFU
540
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
541
/*-----------------------------------------------------------------------------------------------------*/
542
543
/*--------------------------------------------- STM32F401xC -------------------------------------------*/
544
#if defined(STM32F401xC)
545
#define OB_WRP_SECTOR_0 0x00000001U
546
#define OB_WRP_SECTOR_1 0x00000002U
547
#define OB_WRP_SECTOR_2 0x00000004U
548
#define OB_WRP_SECTOR_3 0x00000008U
549
#define OB_WRP_SECTOR_4 0x00000010U
550
#define OB_WRP_SECTOR_5 0x00000020U
551
#define OB_WRP_SECTOR_All 0x00000FFFU
552
#endif
/* STM32F401xC */
553
/*-----------------------------------------------------------------------------------------------------*/
554
555
/*--------------------------------------------- STM32F410xx -------------------------------------------*/
556
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
557
#define OB_WRP_SECTOR_0 0x00000001U
558
#define OB_WRP_SECTOR_1 0x00000002U
559
#define OB_WRP_SECTOR_2 0x00000004U
560
#define OB_WRP_SECTOR_3 0x00000008U
561
#define OB_WRP_SECTOR_4 0x00000010U
562
#define OB_WRP_SECTOR_All 0x00000FFFU
563
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
564
/*-----------------------------------------------------------------------------------------------------*/
565
566
/*---------------------------------- STM32F401xE/STM32F411xE/STM32F446xx ------------------------------*/
567
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
568
#define OB_WRP_SECTOR_0 0x00000001U
569
#define OB_WRP_SECTOR_1 0x00000002U
570
#define OB_WRP_SECTOR_2 0x00000004U
571
#define OB_WRP_SECTOR_3 0x00000008U
572
#define OB_WRP_SECTOR_4 0x00000010U
573
#define OB_WRP_SECTOR_5 0x00000020U
574
#define OB_WRP_SECTOR_6 0x00000040U
575
#define OB_WRP_SECTOR_7 0x00000080U
576
#define OB_WRP_SECTOR_All 0x00000FFFU
577
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx */
578
/*-----------------------------------------------------------------------------------------------------*/
582
586
/*-------------------------------- STM32F42xxx/STM32F43xxx/STM32F469xx/STM32F479xx ---------------------------*/
587
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
588
defined(STM32F469xx) || defined(STM32F479xx)
589
#define OB_PCROP_SECTOR_0 0x00000001U
590
#define OB_PCROP_SECTOR_1 0x00000002U
591
#define OB_PCROP_SECTOR_2 0x00000004U
592
#define OB_PCROP_SECTOR_3 0x00000008U
593
#define OB_PCROP_SECTOR_4 0x00000010U
594
#define OB_PCROP_SECTOR_5 0x00000020U
595
#define OB_PCROP_SECTOR_6 0x00000040U
596
#define OB_PCROP_SECTOR_7 0x00000080U
597
#define OB_PCROP_SECTOR_8 0x00000100U
598
#define OB_PCROP_SECTOR_9 0x00000200U
599
#define OB_PCROP_SECTOR_10 0x00000400U
600
#define OB_PCROP_SECTOR_11 0x00000800U
601
#define OB_PCROP_SECTOR_12 0x00000001U
602
#define OB_PCROP_SECTOR_13 0x00000002U
603
#define OB_PCROP_SECTOR_14 0x00000004U
604
#define OB_PCROP_SECTOR_15 0x00000008U
605
#define OB_PCROP_SECTOR_16 0x00000010U
606
#define OB_PCROP_SECTOR_17 0x00000020U
607
#define OB_PCROP_SECTOR_18 0x00000040U
608
#define OB_PCROP_SECTOR_19 0x00000080U
609
#define OB_PCROP_SECTOR_20 0x00000100U
610
#define OB_PCROP_SECTOR_21 0x00000200U
611
#define OB_PCROP_SECTOR_22 0x00000400U
612
#define OB_PCROP_SECTOR_23 0x00000800U
613
#define OB_PCROP_SECTOR_All 0x00000FFFU
614
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
615
/*-----------------------------------------------------------------------------------------------------*/
616
617
/*------------------------------------- STM32F413xx/STM32F423xx ---------------------------------------*/
618
#if defined(STM32F413xx) || defined(STM32F423xx)
619
#define OB_PCROP_SECTOR_0 0x00000001U
620
#define OB_PCROP_SECTOR_1 0x00000002U
621
#define OB_PCROP_SECTOR_2 0x00000004U
622
#define OB_PCROP_SECTOR_3 0x00000008U
623
#define OB_PCROP_SECTOR_4 0x00000010U
624
#define OB_PCROP_SECTOR_5 0x00000020U
625
#define OB_PCROP_SECTOR_6 0x00000040U
626
#define OB_PCROP_SECTOR_7 0x00000080U
627
#define OB_PCROP_SECTOR_8 0x00000100U
628
#define OB_PCROP_SECTOR_9 0x00000200U
629
#define OB_PCROP_SECTOR_10 0x00000400U
630
#define OB_PCROP_SECTOR_11 0x00000800U
631
#define OB_PCROP_SECTOR_12 0x00001000U
632
#define OB_PCROP_SECTOR_13 0x00002000U
633
#define OB_PCROP_SECTOR_14 0x00004000U
634
#define OB_PCROP_SECTOR_15 0x00004000U
635
#define OB_PCROP_SECTOR_All 0x00007FFFU
636
#endif
/* STM32F413xx || STM32F423xx */
637
/*-----------------------------------------------------------------------------------------------------*/
638
639
/*--------------------------------------------- STM32F401xC -------------------------------------------*/
640
#if defined(STM32F401xC)
641
#define OB_PCROP_SECTOR_0 0x00000001U
642
#define OB_PCROP_SECTOR_1 0x00000002U
643
#define OB_PCROP_SECTOR_2 0x00000004U
644
#define OB_PCROP_SECTOR_3 0x00000008U
645
#define OB_PCROP_SECTOR_4 0x00000010U
646
#define OB_PCROP_SECTOR_5 0x00000020U
647
#define OB_PCROP_SECTOR_All 0x00000FFFU
648
#endif
/* STM32F401xC */
649
/*-----------------------------------------------------------------------------------------------------*/
650
651
/*--------------------------------------------- STM32F410xx -------------------------------------------*/
652
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
653
#define OB_PCROP_SECTOR_0 0x00000001U
654
#define OB_PCROP_SECTOR_1 0x00000002U
655
#define OB_PCROP_SECTOR_2 0x00000004U
656
#define OB_PCROP_SECTOR_3 0x00000008U
657
#define OB_PCROP_SECTOR_4 0x00000010U
658
#define OB_PCROP_SECTOR_All 0x00000FFFU
659
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
660
/*-----------------------------------------------------------------------------------------------------*/
661
662
/*-------------- STM32F401xE/STM32F411xE/STM32F412Zx/STM32F412Vx/STM32F412Rx/STM32F412Cx/STM32F446xx --*/
663
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
664
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx)
665
#define OB_PCROP_SECTOR_0 0x00000001U
666
#define OB_PCROP_SECTOR_1 0x00000002U
667
#define OB_PCROP_SECTOR_2 0x00000004U
668
#define OB_PCROP_SECTOR_3 0x00000008U
669
#define OB_PCROP_SECTOR_4 0x00000010U
670
#define OB_PCROP_SECTOR_5 0x00000020U
671
#define OB_PCROP_SECTOR_6 0x00000040U
672
#define OB_PCROP_SECTOR_7 0x00000080U
673
#define OB_PCROP_SECTOR_All 0x00000FFFU
674
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
675
/*-----------------------------------------------------------------------------------------------------*/
676
680
684
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
685
defined(STM32F469xx) || defined(STM32F479xx)
686
#define OB_DUAL_BOOT_ENABLE ((uint8_t)0x10)
687
#define OB_DUAL_BOOT_DISABLE ((uint8_t)0x00)
688
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
692
696
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
697
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
698
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) ||\
699
defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||\
700
defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
701
#define OB_PCROP_DESELECTED ((uint8_t)0x00)
702
#define OB_PCROP_SELECTED ((uint8_t)0x80)
703
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE ||\
704
STM32F410xx || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx ||\
705
STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
709
713
714
/* Exported macro ------------------------------------------------------------*/
715
716
/* Exported functions --------------------------------------------------------*/
720
724
/* Extension Program operation functions *************************************/
725
HAL_StatusTypeDef
HAL_FLASHEx_Erase
(
FLASH_EraseInitTypeDef
*pEraseInit, uint32_t *SectorError);
726
HAL_StatusTypeDef
HAL_FLASHEx_Erase_IT
(
FLASH_EraseInitTypeDef
*pEraseInit);
727
HAL_StatusTypeDef
HAL_FLASHEx_OBProgram
(
FLASH_OBProgramInitTypeDef
*pOBInit);
728
void
HAL_FLASHEx_OBGetConfig
(
FLASH_OBProgramInitTypeDef
*pOBInit);
729
730
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
731
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
732
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) ||\
733
defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||\
734
defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
735
HAL_StatusTypeDef
HAL_FLASHEx_AdvOBProgram(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit);
736
void
HAL_FLASHEx_AdvOBGetConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit);
737
HAL_StatusTypeDef
HAL_FLASHEx_OB_SelectPCROP(
void
);
738
HAL_StatusTypeDef
HAL_FLASHEx_OB_DeSelectPCROP(
void
);
739
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE ||\
740
STM32F410xx || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx ||\
741
STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
742
743
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
744
defined(STM32F469xx) || defined(STM32F479xx)
745
uint16_t HAL_FLASHEx_OB_GetBank2WRP(
void
);
746
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
750
754
/* Private types -------------------------------------------------------------*/
755
/* Private variables ---------------------------------------------------------*/
756
/* Private constants ---------------------------------------------------------*/
760
/*--------------------------------- STM32F42xxx/STM32F43xxx/STM32F469xx/STM32F479xx---------------------*/
761
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
762
#define FLASH_SECTOR_TOTAL 24U
763
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
764
765
/*-------------------------------------- STM32F413xx/STM32F423xx ---------------------------------------*/
766
#if defined(STM32F413xx) || defined(STM32F423xx)
767
#define FLASH_SECTOR_TOTAL 16U
768
#endif
/* STM32F413xx || STM32F423xx */
769
770
/*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/
771
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F412Zx) ||\
772
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx)
773
#define FLASH_SECTOR_TOTAL 12U
774
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
775
776
/*--------------------------------------------- STM32F401xC -------------------------------------------*/
777
#if defined(STM32F401xC)
778
#define FLASH_SECTOR_TOTAL 6U
779
#endif
/* STM32F401xC */
780
781
/*--------------------------------------------- STM32F410xx -------------------------------------------*/
782
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
783
#define FLASH_SECTOR_TOTAL 5U
784
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
785
786
/*--------------------------------- STM32F401xE/STM32F411xE/STM32F412xG/STM32F446xx -------------------*/
787
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
788
#define FLASH_SECTOR_TOTAL 8U
789
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx */
790
794
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
795
#define OPTCR1_BYTE2_ADDRESS 0x40023C1AU
796
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
797
801
802
/* Private macros ------------------------------------------------------------*/
806
810
811
#define IS_FLASH_TYPEERASE(VALUE)(((VALUE) == FLASH_TYPEERASE_SECTORS) || \
812
((VALUE) == FLASH_TYPEERASE_MASSERASE))
813
814
#define IS_VOLTAGERANGE(RANGE)(((RANGE) == FLASH_VOLTAGE_RANGE_1) || \
815
((RANGE) == FLASH_VOLTAGE_RANGE_2) || \
816
((RANGE) == FLASH_VOLTAGE_RANGE_3) || \
817
((RANGE) == FLASH_VOLTAGE_RANGE_4))
818
819
#define IS_WRPSTATE(VALUE)(((VALUE) == OB_WRPSTATE_DISABLE) || \
820
((VALUE) == OB_WRPSTATE_ENABLE))
821
822
#define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP|OPTIONBYTE_RDP|OPTIONBYTE_USER|OPTIONBYTE_BOR)))
823
824
#define IS_OB_RDP_LEVEL(LEVEL) (((LEVEL) == OB_RDP_LEVEL_0) ||\
825
((LEVEL) == OB_RDP_LEVEL_1) ||\
826
((LEVEL) == OB_RDP_LEVEL_2))
827
828
#define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))
829
830
#define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST))
831
832
#define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST))
833
834
#define IS_OB_BOR_LEVEL(LEVEL) (((LEVEL) == OB_BOR_LEVEL1) || ((LEVEL) == OB_BOR_LEVEL2) ||\
835
((LEVEL) == OB_BOR_LEVEL3) || ((LEVEL) == OB_BOR_OFF))
836
837
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
838
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
839
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) ||\
840
defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||\
841
defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
842
#define IS_PCROPSTATE(VALUE)(((VALUE) == OB_PCROP_STATE_DISABLE) || \
843
((VALUE) == OB_PCROP_STATE_ENABLE))
844
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE ||\
845
STM32F410xx || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx ||\
846
STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
847
848
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
849
defined(STM32F469xx) || defined(STM32F479xx)
850
#define IS_OBEX(VALUE)(((VALUE) == OPTIONBYTE_PCROP) || \
851
((VALUE) == OPTIONBYTE_BOOTCONFIG))
852
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
853
854
#if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
855
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
856
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||\
857
defined(STM32F423xx)
858
#define IS_OBEX(VALUE)(((VALUE) == OPTIONBYTE_PCROP))
859
#endif
/* STM32F401xC || STM32F401xE || STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx ||\
860
STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
861
862
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
863
defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
864
#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \
865
((LATENCY) == FLASH_LATENCY_1) || \
866
((LATENCY) == FLASH_LATENCY_2) || \
867
((LATENCY) == FLASH_LATENCY_3) || \
868
((LATENCY) == FLASH_LATENCY_4) || \
869
((LATENCY) == FLASH_LATENCY_5) || \
870
((LATENCY) == FLASH_LATENCY_6) || \
871
((LATENCY) == FLASH_LATENCY_7) || \
872
((LATENCY) == FLASH_LATENCY_8) || \
873
((LATENCY) == FLASH_LATENCY_9) || \
874
((LATENCY) == FLASH_LATENCY_10) || \
875
((LATENCY) == FLASH_LATENCY_11) || \
876
((LATENCY) == FLASH_LATENCY_12) || \
877
((LATENCY) == FLASH_LATENCY_13) || \
878
((LATENCY) == FLASH_LATENCY_14) || \
879
((LATENCY) == FLASH_LATENCY_15))
880
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
881
882
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
883
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
884
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F412Zx) || defined(STM32F412Vx) ||\
885
defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
886
#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \
887
((LATENCY) == FLASH_LATENCY_1) || \
888
((LATENCY) == FLASH_LATENCY_2) || \
889
((LATENCY) == FLASH_LATENCY_3) || \
890
((LATENCY) == FLASH_LATENCY_4) || \
891
((LATENCY) == FLASH_LATENCY_5) || \
892
((LATENCY) == FLASH_LATENCY_6) || \
893
((LATENCY) == FLASH_LATENCY_7))
894
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F401xC || STM32F401xE || STM32F410xx || STM32F411xE || STM32F412Zx || STM32F412Vx ||\
895
STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
896
897
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
898
#define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1) || \
899
((BANK) == FLASH_BANK_2) || \
900
((BANK) == FLASH_BANK_BOTH))
901
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx || STM32F469xx || STM32F479xx */
902
903
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
904
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
905
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
906
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||\
907
defined(STM32F423xx)
908
#define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1))
909
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F401xC || STM32F401xE || STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx ||\
910
STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
911
912
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
913
#define IS_FLASH_SECTOR(SECTOR) ( ((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
914
((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
915
((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
916
((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\
917
((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\
918
((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11) ||\
919
((SECTOR) == FLASH_SECTOR_12) || ((SECTOR) == FLASH_SECTOR_13) ||\
920
((SECTOR) == FLASH_SECTOR_14) || ((SECTOR) == FLASH_SECTOR_15) ||\
921
((SECTOR) == FLASH_SECTOR_16) || ((SECTOR) == FLASH_SECTOR_17) ||\
922
((SECTOR) == FLASH_SECTOR_18) || ((SECTOR) == FLASH_SECTOR_19) ||\
923
((SECTOR) == FLASH_SECTOR_20) || ((SECTOR) == FLASH_SECTOR_21) ||\
924
((SECTOR) == FLASH_SECTOR_22) || ((SECTOR) == FLASH_SECTOR_23))
925
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
926
927
#if defined(STM32F413xx) || defined(STM32F423xx)
928
#define IS_FLASH_SECTOR(SECTOR) ( ((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
929
((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
930
((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
931
((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\
932
((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\
933
((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11) ||\
934
((SECTOR) == FLASH_SECTOR_12) || ((SECTOR) == FLASH_SECTOR_13) ||\
935
((SECTOR) == FLASH_SECTOR_14) || ((SECTOR) == FLASH_SECTOR_15))
936
#endif
/* STM32F413xx || STM32F423xx */
937
938
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F412Zx) ||\
939
defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx)
940
#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
941
((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
942
((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
943
((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\
944
((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\
945
((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11))
946
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
947
948
#if defined(STM32F401xC)
949
#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
950
((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
951
((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5))
952
#endif
/* STM32F401xC */
953
954
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
955
#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
956
((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
957
((SECTOR) == FLASH_SECTOR_4))
958
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
959
960
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
961
#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
962
((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
963
((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
964
((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7))
965
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx */
966
967
#define IS_FLASH_ADDRESS(ADDRESS) ((((ADDRESS) >= FLASH_BASE) && ((ADDRESS) <= FLASH_END)) || \
968
(((ADDRESS) >= FLASH_OTP_BASE) && ((ADDRESS) <= FLASH_OTP_END)))
969
970
#define IS_FLASH_NBSECTORS(NBSECTORS) (((NBSECTORS) != 0) && ((NBSECTORS) <= FLASH_SECTOR_TOTAL))
971
972
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
973
#define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & 0xFF000000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
974
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
975
976
#if defined(STM32F413xx) || defined(STM32F423xx)
977
#define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & 0xFFFF8000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
978
#endif
/* STM32F413xx || STM32F423xx */
979
980
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
981
#define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
982
#endif
/* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
983
984
#if defined(STM32F401xC)
985
#define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
986
#endif
/* STM32F401xC */
987
988
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
989
#define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
990
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
991
992
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) || defined(STM32F412Vx) ||\
993
defined(STM32F412Rx) || defined(STM32F412Cx)
994
#define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
995
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
996
997
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
998
#define IS_OB_PCROP(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
999
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
1000
1001
#if defined(STM32F413xx) || defined(STM32F423xx)
1002
#define IS_OB_PCROP(SECTOR)((((SECTOR) & 0xFFFF8000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
1003
#endif
/* STM32F413xx || STM32F423xx */
1004
1005
#if defined(STM32F401xC)
1006
#define IS_OB_PCROP(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
1007
#endif
/* STM32F401xC */
1008
1009
#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
1010
#define IS_OB_PCROP(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
1011
#endif
/* STM32F410Tx || STM32F410Cx || STM32F410Rx */
1012
1013
#if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) || defined(STM32F412Vx) ||\
1014
defined(STM32F412Rx) || defined(STM32F412Cx)
1015
#define IS_OB_PCROP(SECTOR)((((SECTOR) & 0xFFFFF000U) == 0x00000000U) && ((SECTOR) != 0x00000000U))
1016
#endif
/* STM32F401xE || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
1017
1018
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
1019
defined(STM32F469xx) || defined(STM32F479xx)
1020
#define IS_OB_BOOT(BOOT) (((BOOT) == OB_DUAL_BOOT_ENABLE) || ((BOOT) == OB_DUAL_BOOT_DISABLE))
1021
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
1022
1023
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
1024
defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) ||\
1025
defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) ||\
1026
defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||\
1027
defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
1028
#define IS_OB_PCROP_SELECT(PCROP) (((PCROP) == OB_PCROP_SELECTED) || ((PCROP) == OB_PCROP_DESELECTED))
1029
#endif
/* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE ||\
1030
STM32F410xx || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx ||\
1031
STM32F412Vx || STM32F412Rx || STM32F412Cx || STM32F413xx || STM32F423xx */
1035
1039
1040
/* Private functions ---------------------------------------------------------*/
1044
void
FLASH_Erase_Sector
(uint32_t Sector, uint8_t VoltageRange);
1045
void
FLASH_FlushCaches
(
void
);
1049
1053
1057
1058
#ifdef __cplusplus
1059
}
1060
#endif
1061
1062
#endif
/* __STM32F4xx_HAL_FLASH_EX_H */
1063
HAL_FLASHEx_OBProgram
HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit)
HAL_FLASHEx_Erase
HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError)
HAL_FLASHEx_OBGetConfig
void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit)
HAL_FLASHEx_Erase_IT
HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit)
FLASH_FlushCaches
void FLASH_FlushCaches(void)
FLASH_Erase_Sector
void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange)
stm32f4xx_hal_def.h
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL_StatusTypeDef
HAL Status structures definition.
Definition
stm32f4xx_hal_def.h:39
FLASH_EraseInitTypeDef
FLASH Erase structure definition.
Definition
stm32f4xx_hal_flash_ex.h:46
FLASH_EraseInitTypeDef::Sector
uint32_t Sector
Definition
stm32f4xx_hal_flash_ex.h:53
FLASH_EraseInitTypeDef::VoltageRange
uint32_t VoltageRange
Definition
stm32f4xx_hal_flash_ex.h:59
FLASH_EraseInitTypeDef::TypeErase
uint32_t TypeErase
Definition
stm32f4xx_hal_flash_ex.h:47
FLASH_EraseInitTypeDef::Banks
uint32_t Banks
Definition
stm32f4xx_hal_flash_ex.h:50
FLASH_EraseInitTypeDef::NbSectors
uint32_t NbSectors
Definition
stm32f4xx_hal_flash_ex.h:56
FLASH_OBProgramInitTypeDef
FLASH Option Bytes Program structure definition.
Definition
stm32f4xx_hal_flash_ex.h:68
FLASH_OBProgramInitTypeDef::RDPLevel
uint32_t RDPLevel
Definition
stm32f4xx_hal_flash_ex.h:81
FLASH_OBProgramInitTypeDef::WRPState
uint32_t WRPState
Definition
stm32f4xx_hal_flash_ex.h:72
FLASH_OBProgramInitTypeDef::OptionType
uint32_t OptionType
Definition
stm32f4xx_hal_flash_ex.h:69
FLASH_OBProgramInitTypeDef::BORLevel
uint32_t BORLevel
Definition
stm32f4xx_hal_flash_ex.h:84
FLASH_OBProgramInitTypeDef::Banks
uint32_t Banks
Definition
stm32f4xx_hal_flash_ex.h:78
FLASH_OBProgramInitTypeDef::WRPSector
uint32_t WRPSector
Definition
stm32f4xx_hal_flash_ex.h:75
FLASH_OBProgramInitTypeDef::USERConfig
uint8_t USERConfig
Definition
stm32f4xx_hal_flash_ex.h:87
hal-driver
Inc
stm32f4xx_hal_flash_ex.h
Generated by
1.17.0