This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

how to read and write to flash?

Hello friends. How to write a number to and read from internal flash. My information about the microcontroller is very weak. I use STM32F103RET6 . I test The following program but it did not work.

int u2;
uint32_t address = 0x8020000;
/** writeFlash **/
HAL_FLASH_Unlock();
FLASH_PageErase(address);
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD ,address ,u2);
HAL_FLASH_Lock();
/** readFlash **/
u2= *(uint32_t *)(address);** read from Flash **/

I found following program but my compiler (keil) shows Syntax error when insert :

(FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR)

uint32_t startAddress = 0x8000000;//starting from 256KB
//0x8020000 starting 128KB
void writeFlash(void)
{
u32 i, j;
FLASH_Unlock();//unlock flash writing
FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(0x8000000);
for(i=0; i<16; i++)
for(j=0; j<16; j++)
FLASH_ProgramHalfWord((0x8000000 + (i*16+j)*2),16[i][j]);
FLASH_Lock();//lock the flash for writing
}
void readFlash(void)
{
u32 i, j;
for(i=0; i<16; i++)
for(j=0; j<16; j++)
16[i][j] = *(uint16_t *)(0x8000000 + (i*16+j)*2);
}

Please help me. I need a simple example. I'm sorry that your time with my terrible English.

Related