STM32F1XX HAL_FLASH_Program dont support 8bytes? or go 16bytes space waste.
Hi, im trying to program (8byte) 500 lenght buffer into Internal an STM32F103xx microcontroller, i know how to write but
char receive_data[500]; / Char Belongs to 8bytes
but in STM32F1xx_hal_flash.h
#define FLASH_TYPEPROGRAM_HALFWORD ((uint32_t)0x01) /*!<Program a half-word (16-bit) at a specified address.*/
#define FLASH_TYPEPROGRAM_WORD ((uint32_t)0x02) /*!<Program a word (32-bit) at a specified address.*/#define FLASH_TYPEPROGRAM_DOUBLEWORD ((uint32_t)0x03) /*!<Program a double word (64-bit) at a specifiedand 8bytes?
in other series like STM32F4XX we can find 8bytes support.
if
(TypeProgram == )00190 {00191/*Program byte (8-bit) at a specified address.*/
00192 (Address, (uint8_t) Data);00193 }and we have the FLASH_TYPEPROGRAM_BYTE.
i was tempted to addit to this STM32F1XX function but dont look any 8byte friendly with the
nbiterations var.
if(status == HAL_OK)
{ if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) { /* Program halfword (16-bit) at a specified address. */ nbiterations = 1; } else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) { /* Program word (32-bit = 2*16-bit) at a specified address. */ nbiterations = 2; } else { /* Program double word (64-bit = 4*16-bit) at a specified address. */ nbiterations = 4; }for (index = 0; index < nbiterations; index++)
{ FLASH_Program_HalfWord((Address + (2*index)), (uint16_t)(Data >> (16*index)));#if defined(FLASH_BANK2_END)
if(Address <= FLASH_BANK1_END) {#endif /* FLASH_BANK2_END */ /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); /* If the program operation is completed, disable the PG Bit */ CLEAR_BIT(FLASH->CR, FLASH_CR_PG);#if defined(FLASH_BANK2_END) }for example im gonna program :
char strJsonExtracted[] = '{\'set\':\'mf\',\'d\':\'2\',\'m\':\'22\',\'a\':\'17\',\'h\':\'18\',\'s\':\'45\'}';
(8 bytes buffer).
if the
FLASH_TYPEPROGRAM_HALFWORD is used i guess lot of space will get wasted because will se 16bytes when needed is just 8bytes and
, am i wrong? or this would be the best option? thanks.