STM32F0的flash讀寫

////以爲好的點下推薦,感恩啦!ui

flash大小64k Rom+8k Ram的大小,stm32f051有64k Rom,總的分爲 64頁,一頁1024byte ,在flash的Rom裏面寫數據掉電保存,至關於W25q80flash

uint32_t FLASH_START_ADDR = 0x08000000+1024*63; //1024   一頁大小1k  ,   63   flash有64K在最後一頁首地址開始寫
/*****************************************************************************
功能:flash寫it

輸入:addr:寫地址 0-一頁大小  data :4字節數據數據

返回:無
******************************************************************************/
void WriteFlash(uint32_t addr,uint32_t data)
{
FLASH_Unlock(); //½âËøFLASH±à³Ì²Á³ý¿ØÖÆÆ÷
FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR);//Çå³ý±ê־λ
FLASH_ErasePage(FLASH_START_ADDR); //²Á³ýÖ¸¶¨µØÖ·Ò³
FLASH_ProgramWord(FLASH_START_ADDR+(addr*4),data); //´ÓÖ¸¶¨Ò³µÄ0µØÖ·¿ªÊ¼Ð´
FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR);//Çå³ý±ê־λ
FLASH_Lock(); //Ëø¶¨FLASH±à³Ì²Á³ý¿ØÖÆÆ÷
}data

/*****************************************************************************
功能:讀flashreturn

輸入:讀地址void

返回:讀到的4字節數據******************************************************************************/uint32_t ReadFlash(uint16_t addr){ uint32_t value; value = *(uint32_t*)(FLASH_START_ADDR+(addr*4)); return value;}

相關文章
相關標籤/搜索