File tree Expand file tree Collapse file tree 1 file changed +12
-1
lines changed
libraries/EEPROM/src/utility Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -194,7 +194,11 @@ void eeprom_buffer_flush(void)
194
194
uint32_t address_end = FLASH_BASE_ADDRESS + E2END ;
195
195
#if defined(FLASH_TYPEERASE_PAGES )
196
196
uint32_t pageError = 0 ;
197
+ #if defined(FLASH_TYPEPROGRAM_QUADWORD )
198
+ uint64_t data [2 ] = {0x0000 };
199
+ #else
197
200
uint64_t data = 0 ;
201
+ #endif
198
202
199
203
/* ERASING page */
200
204
EraseInitStruct .TypeErase = FLASH_TYPEERASE_PAGES ;
@@ -212,12 +216,19 @@ void eeprom_buffer_flush(void)
212
216
__HAL_FLASH_CLEAR_FLAG (FLASH_FLAG_ALL_ERRORS );
213
217
if (HAL_FLASHEx_Erase (& EraseInitStruct , & pageError ) == HAL_OK ) {
214
218
while (address <= address_end ) {
215
-
219
+ #if defined(FLASH_TYPEPROGRAM_QUADWORD )
220
+ /* 128 bits */
221
+ memcpy (& data , eeprom_buffer + offset , 4 * sizeof (uint32_t ));
222
+ if (HAL_FLASH_Program (FLASH_TYPEPROGRAM_QUADWORD , address , (uint32_t )data ) == HAL_OK ) {
223
+ address += 16 ;
224
+ offset += 16 ;
225
+ #else
216
226
data = * ((uint64_t * )((uint8_t * )eeprom_buffer + offset ));
217
227
218
228
if (HAL_FLASH_Program (FLASH_TYPEPROGRAM_DOUBLEWORD , address , data ) == HAL_OK ) {
219
229
address += 8 ;
220
230
offset += 8 ;
231
+ #endif
221
232
} else {
222
233
address = address_end + 1 ;
223
234
}
You can’t perform that action at this time.
0 commit comments