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

標題: STM32-FLASH讀寫 [打印本頁]

作者: 51heisex    時間: 2016-1-23 00:45
標題: STM32-FLASH讀寫
stm32寫flash時候,注意必須是4字節對齊,這跟它的內部接口是有關的。

最近在學STM32,要用到內部flash存點數據,一開始在網上看了很多例程,自己寫了一個,當到單片機中,一點反應沒有,于是又到網上看了又看,找啊找,發現這樣的讀寫內部flash的軟件不多,而且說的也不是很明確(個人觀點),特地總結了一下,希望對剛學STM32的小伙伴有幫助。
注意:寫數據的地址(紅色字),如果你的boot1=x,boot0=0,那么你的啟動模式是用戶閃存存儲器,而這個用戶閃存存儲器的地址就是0x08000000。這個很重要。。。。∥矣玫氖荢TM32F103VET6,下面是寫內部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]中。







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1