@@ -133,7 +133,7 @@ static inline uint32_t get_flash_end(void) {
133
133
#endif
134
134
#endif /* FLASH_BASE_ADDRESS */
135
135
136
- static uint8_t eeprom_buffer [E2END ] = {0 };
136
+ static uint8_t eeprom_buffer [E2END + 1 ] = {0 };
137
137
138
138
/**
139
139
* @brief Function reads a byte from emulated eeprom (flash)
@@ -181,7 +181,7 @@ void eeprom_buffered_write_byte(uint32_t pos, uint8_t value) {
181
181
* @retval none
182
182
*/
183
183
void eeprom_buffer_fill (void ) {
184
- memcpy (eeprom_buffer , (uint8_t * )(FLASH_BASE_ADDRESS ), E2END );
184
+ memcpy (eeprom_buffer , (uint8_t * )(FLASH_BASE_ADDRESS ), E2END + 1 );
185
185
}
186
186
187
187
/**
@@ -230,7 +230,7 @@ void eeprom_buffer_flush(void) {
230
230
__HAL_FLASH_CLEAR_FLAG (FLASH_FLAG_EOP |FLASH_FLAG_WRPERR |FLASH_FLAG_PGERR );
231
231
#endif
232
232
if (HAL_FLASHEx_Erase (& EraseInitStruct , & pageError ) == HAL_OK ) {
233
- while (address < address_end ) {
233
+ while (address <= address_end ) {
234
234
#if defined(STM32L0xx ) || defined(STM32L1xx )
235
235
memcpy (& data , eeprom_buffer + offset , sizeof (uint32_t ));
236
236
if (HAL_FLASH_Program (FLASH_TYPEPROGRAM_WORD , address , data ) == HAL_OK ) {
@@ -263,7 +263,7 @@ void eeprom_buffer_flush(void) {
263
263
HAL_FLASH_Unlock ();
264
264
265
265
if (HAL_FLASHEx_Erase (& EraseInitStruct , & SectorError ) == HAL_OK ) {
266
- while (address < address_end ) {
266
+ while (address <= address_end ) {
267
267
memcpy (& data , eeprom_buffer + offset , sizeof (uint32_t ));
268
268
if (HAL_FLASH_Program (FLASH_TYPEPROGRAM_WORD , address , data ) == HAL_OK ) {
269
269
address += 4 ;
0 commit comments