26
26
extern FLASH_ProcessTypeDef pFlash ;
27
27
extern void FLASH_PageErase (uint32_t PageAddress );
28
28
29
- #define __wait_todo () util_assert(0)
30
-
31
29
static uint32_t FlashInitStatus = 0 ;
32
30
33
31
uint32_t Init (uint32_t adr , uint32_t clk , uint32_t fnc )
34
32
{
35
33
FlashInitStatus |= 1 << fnc ;
36
- if (FlashInitStatus )
37
- {
34
+ if (FlashInitStatus ) {
38
35
HAL_FLASH_Unlock ();
39
36
}
40
37
return 0 ;
@@ -43,22 +40,19 @@ uint32_t Init(uint32_t adr, uint32_t clk, uint32_t fnc)
43
40
uint32_t UnInit (uint32_t fnc )
44
41
{
45
42
FlashInitStatus &= ~(1 << fnc );
46
- if (!FlashInitStatus )
47
- {
43
+ if (!FlashInitStatus ) {
48
44
HAL_FLASH_Lock ();
49
45
}
50
46
return 0 ;
51
47
}
52
48
53
49
uint32_t BlankCheck (uint32_t adr , uint32_t sz , uint8_t pat )
54
50
{
55
- __wait_todo ();
56
51
return 0 ;
57
52
}
58
53
59
54
uint32_t EraseChip (void )
60
55
{
61
- __wait_todo ();
62
56
return 0 ;
63
57
}
64
58
@@ -69,28 +63,15 @@ uint32_t EraseSector(uint32_t adr)
69
63
util_assert (IS_FLASH_NB_PAGES (adr , 1 ));
70
64
71
65
__HAL_LOCK (& pFlash );
72
- #if defined(FLASH_BANK2_END )
73
- if (adr > FLASH_BANK1_END )
74
- {
75
- if (FLASH_WaitForLastOperationBank2 (FLASH_TIMEOUT_VALUE ) == HAL_OK )
76
- {
77
- FLASH_PageErase (adr );
78
- status = FLASH_WaitForLastOperationBank2 (FLASH_TIMEOUT_VALUE );
79
- CLEAR_BIT (FLASH -> CR2 , FLASH_CR2_PER );
80
- }
81
- }
82
- else
83
- #endif
84
- {
85
- if (FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE ) == HAL_OK )
86
- {
87
- FLASH_PageErase (adr );
88
- status = FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE );
89
- CLEAR_BIT (FLASH -> CR , FLASH_CR_PER );
90
- }
66
+
67
+ if (FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE ) == HAL_OK ) {
68
+ FLASH_PageErase (adr );
69
+ status = FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE );
70
+ CLEAR_BIT (FLASH -> CR , FLASH_CR_PER );
91
71
}
92
72
93
73
__HAL_UNLOCK (& pFlash );
74
+
94
75
return status != HAL_OK ;
95
76
}
96
77
@@ -105,39 +86,13 @@ uint32_t ProgramPage(uint32_t adr, uint32_t sz, uint32_t *buf)
105
86
106
87
__HAL_LOCK (& pFlash );
107
88
108
- #if defined(FLASH_BANK2_END )
109
- if (adr <= FLASH_BANK1_END )
110
- {
111
- #endif /* FLASH_BANK2_END */
89
+ status = FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE );
90
+
91
+ while (status == HAL_OK && sz > 0 ) {
92
+ SET_BIT (FLASH -> CR , FLASH_CR_PG );
93
+ * (__IO uint16_t * )adr = * (uint16_t * )buf ;
112
94
status = FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE );
113
- #if defined(FLASH_BANK2_END )
114
- }
115
- else
116
- {
117
- status = FLASH_WaitForLastOperationBank2 (FLASH_TIMEOUT_VALUE );
118
- }
119
- #endif /* FLASH_BANK2_END */
120
-
121
- while (status == HAL_OK && sz > 0 )
122
- {
123
- #if defined(FLASH_BANK2_END )
124
- if (adr <= FLASH_BANK1_END )
125
- {
126
- #endif /* FLASH_BANK2_END */
127
- SET_BIT (FLASH -> CR , FLASH_CR_PG );
128
- * (__IO uint16_t * )adr = * (uint16_t * )buf ;
129
- status = FLASH_WaitForLastOperation (FLASH_TIMEOUT_VALUE );
130
- CLEAR_BIT (FLASH -> CR , FLASH_CR_PG );
131
- #if defined(FLASH_BANK2_END )
132
- }
133
- else
134
- {
135
- SET_BIT (FLASH -> CR2 , FLASH_CR2_PG );
136
- * (__IO uint16_t * )adr = buf ;
137
- status = FLASH_WaitForLastOperationBank2 (FLASH_TIMEOUT_VALUE );
138
- CLEAR_BIT (FLASH -> CR2 , FLASH_CR2_PG );
139
- }
140
- #endif /* FLASH_BANK2_END */
95
+ CLEAR_BIT (FLASH -> CR , FLASH_CR_PG );
141
96
sz -= sizeof (uint16_t );
142
97
adr += sizeof (uint16_t );
143
98
buf = (uint32_t * )(((uint16_t * )buf ) + 1 );
@@ -150,6 +105,5 @@ uint32_t ProgramPage(uint32_t adr, uint32_t sz, uint32_t *buf)
150
105
151
106
uint32_t Verify (uint32_t adr , uint32_t sz , uint32_t * buf )
152
107
{
153
- __wait_todo ();
154
108
return 0 ;
155
109
}
0 commit comments