欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3701|回復: 0
打印 上一主題 下一主題
收起左側

STM32-FLASH讀寫

[復制鏈接]
跳轉到指定樓層
樓主
ID:104126 發表于 2016-1-23 00:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32寫flash時候,注意必須是4字節對齊,這跟它的內部接口是有關的。

最近在學STM32,要用到內部flash存點數據,一開始在網上看了很多例程,自己寫了一個,當到單片機中,一點反應沒有,于是又到網上看了又看,找啊找,發現這樣的讀寫內部flash的軟件不多,而且說的也不是很明確(個人觀點),特地總結了一下,希望對剛學STM32的小伙伴有幫助。
注意:寫數據的地址(紅色字),如果你的boot1=x,boot0=0,那么你的啟動模式是用戶閃存存儲器,而這個用戶閃存存儲器的地址就是0x08000000。這個很重要。。。!我用的是STM32F103VET6,下面是寫內部flash的子程序: #include "flash.h"
#define  STARTADDR 0x0807F800   //主存儲器第255頁首地址           volatileFLASH_Status FLASHStatus = FLASH_COMPLETE;      
void ReadFlashNBtye(uint32_t ReadAddress, uint8_t *ReadBuf,int32_t ReadNum)  {  int DataNum= 0;  ReadAddress = (uint32_t)STARTADDR +ReadAddress;   while(DataNum < ReadNum)  {   *(ReadBuf + DataNum) =*(__IO uint8_t*) ReadAddress++;   DataNum++; }
// return DataNum; }  
void WriteFlashOneWord(uint32_t WriteAddress,uint32_tWriteData) { FLASH_Unlock();
  FLASH_ClearFlag(FLASH_FLAG_BSY |FLASH_FLAG_EOP | FLASH_FLAG_PGERR |
FLASH_FLAG_WRPRTERR);   FLASHStatus = FLASH_ErasePage(STARTADDR);//擦除一頁 FLASH_EraseAllPages():擦除全
// 部 FLASH 頁面   if(FLASHStatus ==FLASH_COMPLETE)  {   FLASHStatus= FLASH_ProgramWord(STARTADDR + WriteAddress, WriteData);    }
FLASH_Lock();
}





函數調用:例:u8  Temp_Data[4] = { 0};
WriteFlashOneWord( 0 , 0x12345678 );delay_ms(10);
            ReadFlashNBtye( 0 , Temp_Data , 4 );            delay_ms(10);
這樣數據就寫入了內部flash,讀出時就放在了Temp_Data[4]中。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表