14#include <stm32f4xx_hal_def.h>
15#define ADDR_SECTOR_0 ((uint32_t)0x08000000)
16#define ADDR_SECTOR_1 ((uint32_t)0x08004000)
17#define ADDR_SECTOR_2 ((uint32_t)0x08008000)
18#define ADDR_SECTOR_3 ((uint32_t)0x0800C000)
19#define ADDR_SECTOR_4 ((uint32_t)0x08010000)
20#define ADDR_SECTOR_5 ((uint32_t)0x08020000)
21#define ADDR_SECTOR_6 ((uint32_t)0x08040000)
22#define ADDR_SECTOR_7 ((uint32_t)0x08060000)
23#define ADDR_SECTOR_8 ((uint32_t)0x08080000)
24#define ADDR_SECTOR_9 ((uint32_t)0x080A0000)
25#define ADDR_SECTOR_10 ((uint32_t)0x080C0000)
26#define ADDR_SECTOR_11 ((uint32_t)0x080E0000)
27#define ADDR_SECTOR_12 ((uint32_t)0x08100000)
28#define ADDR_SECTOR_13 ((uint32_t)0x08104000)
29#define ADDR_SECTOR_14 ((uint32_t)0x08108000)
30#define ADDR_SECTOR_15 ((uint32_t)0x0810C000)
31#define ADDR_SECTOR_16 ((uint32_t)0x08110000)
32#define ADDR_SECTOR_17 ((uint32_t)0x08120000)
33#define ADDR_SECTOR_18 ((uint32_t)0x08140000)
34#define ADDR_SECTOR_19 ((uint32_t)0x08160000)
35#define ADDR_SECTOR_20 ((uint32_t)0x08180000)
36#define ADDR_SECTOR_21 ((uint32_t)0x081A0000)
37#define ADDR_SECTOR_22 ((uint32_t)0x081C0000)
38#define ADDR_SECTOR_23 ((uint32_t)0x081E0000)
39#define ADDR_SECTOR_END ((uint32_t)0x08200000)
43size_t Stm32F4Flash::sector(uint32_t address)
const
45 if ((address >= ADDR_SECTOR_8 && size() <= 512) ||
46 (address >= ADDR_SECTOR_12 && size() <= 1024) ||
47 (address >= ADDR_SECTOR_END))
52 else if (address < ADDR_SECTOR_6)
54 if (address < ADDR_SECTOR_3)
56 if (address < ADDR_SECTOR_1)
58 else if (address < ADDR_SECTOR_2)
65 if (address < ADDR_SECTOR_4)
67 else if (address < ADDR_SECTOR_5)
73 else if (address < ADDR_SECTOR_12)
75 if (address < ADDR_SECTOR_9)
77 if (address < ADDR_SECTOR_7)
79 else if (address < ADDR_SECTOR_8)
86 if (address < ADDR_SECTOR_10)
88 else if (address < ADDR_SECTOR_11)
94 else if (address < ADDR_SECTOR_18)
96 if (address < ADDR_SECTOR_15)
98 if (address < ADDR_SECTOR_13)
100 else if (address < ADDR_SECTOR_14)
107 if (address < ADDR_SECTOR_16)
109 else if (address < ADDR_SECTOR_17)
117 if (address < ADDR_SECTOR_21)
119 if (address < ADDR_SECTOR_19)
121 else if (address < ADDR_SECTOR_20)
128 if (address < ADDR_SECTOR_22)
130 else if (address < ADDR_SECTOR_23)
138uint32_t Stm32F4Flash::address(
size_t sector)
const
142 case 0:
return ADDR_SECTOR_0;
143 case 1:
return ADDR_SECTOR_1;
144 case 2:
return ADDR_SECTOR_2;
145 case 3:
return ADDR_SECTOR_3;
146 case 4:
return ADDR_SECTOR_4;
147 case 5:
return ADDR_SECTOR_5;
148 case 6:
return ADDR_SECTOR_6;
149 case 7:
return ADDR_SECTOR_7;
150 case 8:
return ADDR_SECTOR_8;
151 case 9:
return ADDR_SECTOR_9;
152 case 10:
return ADDR_SECTOR_10;
153 case 11:
return ADDR_SECTOR_11;
154 case 12:
return ADDR_SECTOR_12;
155 case 13:
return ADDR_SECTOR_13;
156 case 14:
return ADDR_SECTOR_14;
157 case 15:
return ADDR_SECTOR_15;
158 case 16:
return ADDR_SECTOR_16;
159 case 17:
return ADDR_SECTOR_17;
160 case 18:
return ADDR_SECTOR_18;
161 case 19:
return ADDR_SECTOR_19;
162 case 20:
return ADDR_SECTOR_20;
163 case 21:
return ADDR_SECTOR_21;
164 case 22:
return ADDR_SECTOR_22;
165 case 23:
return ADDR_SECTOR_23;
172size_t Stm32F4Flash::sectorSize(
size_t sector)
const
176 else if (sector == 4)
178 else if (sector <= 11)
180 else if (sector <= 15)
182 else if (sector == 16)
184 else if (sector <= 23)
193size_t Stm32F4Flash::numberOfSectors()
const