欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STM32-FLASH讀寫(xiě)
[打印本頁(yè)]
作者:
51heisex
時(shí)間:
2016-1-23 00:45
標(biāo)題:
STM32-FLASH讀寫(xiě)
stm32寫(xiě)flash時(shí)候,注意必須是4字節(jié)對(duì)齊,這跟它的內(nèi)部接口是有關(guān)的。
最近在學(xué)STM32,要用到內(nèi)部flash存點(diǎn)數(shù)據(jù),一開(kāi)始在網(wǎng)上看了很多例程,自己寫(xiě)了一個(gè),當(dāng)?shù)絾纹瑱C(jī)中,一點(diǎn)反應(yīng)沒(méi)有,于是又到網(wǎng)上看了又看,找啊找,發(fā)現(xiàn)這樣的讀寫(xiě)內(nèi)部flash的軟件不多,而且說(shuō)的也不是很明確(個(gè)人觀點(diǎn)),特地總結(jié)了一下,希望對(duì)剛學(xué)STM32的小伙伴有幫助。
注意:寫(xiě)數(shù)據(jù)的地址(紅色字),如果你的boot1=x,boot0=0,那么你的啟動(dòng)模式是用戶閃存存儲(chǔ)器,而這個(gè)用戶閃存存儲(chǔ)器的地址就是0x08000000。這個(gè)很重要!!!!!我用的是STM32F103VET6,下面是寫(xiě)內(nèi)部flash的子程序: #include "flash.h"
#define STARTADDR 0x0807F800 //主存儲(chǔ)器第255頁(yè)首地址 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);//擦除一頁(yè) FLASH_EraseAllPages():擦除全
// 部 FLASH 頁(yè)面 if(FLASHStatus ==FLASH_COMPLETE) { FLASHStatus= FLASH_ProgramWord(STARTADDR + WriteAddress, WriteData); }
FLASH_Lock();
}
函數(shù)調(diào)用:例:u8 Temp_Data[4] = { 0};
WriteFlashOneWord( 0 , 0x12345678 );delay_ms(10);
ReadFlashNBtye( 0 , Temp_Data , 4 ); delay_ms(10);
這樣數(shù)據(jù)就寫(xiě)入了內(nèi)部flash,讀出時(shí)就放在了Temp_Data[4]中。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1