STM32F0的flash讀寫


////覺得好的點下推薦,感恩啦!

flash大小64k Rom+8k Ram的大小,stm32f051有64k Rom,總的分為 64頁,一頁1024byte ,在flash的Rom里面寫數據掉電保存,相當於W25q80

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

輸入: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±à³Ì²Á³ý¿ØÖÆÆ÷
}

/*****************************************************************************
功能:讀flash

輸入:讀地址

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM