91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡(jiǎn)介

針對(duì) STM32F4xx 的內(nèi)部flash的讀寫操作,經(jīng)本人優(yōu)化,運(yùn)行穩(wěn)定可靠。

資源截圖

代碼片段和文件信息

#include?“stm32f4xx_flash.h“
#include?“stm32f4xxflash.h“



void?flashDelay(int?n)
{
while(n--?>?0);
}

/*
//名稱:FlashSave
//功能:flash?保存功能
//參數(shù):
// p 要保存的數(shù)據(jù)。
// n 要保存的數(shù)據(jù)個(gè)數(shù)。
void?FlashSave(char?*?p??int?n?)
{
int?i;

FLASH_Unlock();?//解鎖
FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_OPERR|FLASH_FLAG_WRPERR|
FLASH_FLAG_PGAERR?|?FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);???//清標(biāo)志
FLASH_EraseSector(FLASH_OPR_SECTOR??VoltageRange_3);?//擦除扇區(qū)
for(i?=?0?;?i? {
FLASH_ProgramByte(FLASH_SAVE_ADDR?+?ip[n]);//寫字節(jié)
}
FLASH_Lock();//加鎖
}


//名稱:FlashSave
//功能:讀取flash內(nèi)數(shù)據(jù)
//參數(shù):
// p 讀取的數(shù)據(jù)存放的地方
// n 要讀取的數(shù)據(jù)個(gè)數(shù)。
void?FlashLoad(char?*?p??int?n?)
{
volatile?int?i;
volatile?char?*?addr=(char?*)FLASH_SAVE_ADDR;

FLASH_Unlock();?//解鎖
//FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_OPERR|FLASH_FLAG_WRPERR|?
// FLASH_FLAG_PGAERR?|?FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);????//清標(biāo)志
//FLASH_EraseSector(FLASH_OPR_SECTOR??VoltageRange_3);?//擦除扇區(qū)
for(i?=?0?;?i? {
p[n]?=?addr[i];
//FLASH_LoadByte(FLASH_SAVE_ADDR?+?ip[n]);//寫字節(jié)
}
FLASH_Lock();//加鎖
}







#define?DATA_32?????????????????((uint32_t)0x87654321)


void?flashtest(void?)
{
volatile?int?MemoryProgramStatus;
int?Address;
int?StartSector;
int?EndSector;
int?i;
volatile?int?data32;


FLASH_Unlock();?//解鎖FLASH后才能向FLASH中寫數(shù)據(jù)。


FLASH_ClearFlag(FLASH_FLAG_EOP?|?FLASH_FLAG_OPERR?|?FLASH_FLAG_WRPERR?|?
??????FLASH_FLAG_PGAERR?|?FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);

//?Get?the?number?of?the?start?and?end?sectors?//
StartSector?=FLASH_Sector_10;//?GetSector(FLASH_Sector_10);??//獲取FLASH的Sector編號(hào)
EndSector?=?FLASH_Sector_10;//GetSector(FLASH_Sector_10);

//擦除FLASH
for?(i?=?StartSector;?i? {
///?Device?voltage?range?supposed?to?be?[2.7V?to?3.6V]?the?operation?will
//be?done?by?word?
if?(FLASH_EraseSector(i?VoltageRange_3)?!=?FLASH_COMPLETE)
{?
while?(1)
{
}
}
}

//擦除完畢//
//開始寫入//
Address?=?FLASH_SAVE_ADDR;

while?(Address? {

if?(FLASH_ProgramWord(Address?DATA_32)?==?FLASH_COMPLETE)???//將DATA_32寫入相應(yīng)的地址。
{
Address?=?Address?+?4;
}
else
{?
//?Error?occurred?while?writing?data?in?Flash?memory.?
User?can?add?here?some?code?to?deal?with?this?error?
while?(1)
{
}
}
}

FLASH_Lock();??//讀FLASH不需要FLASH處于解鎖狀態(tài)。

//讀出數(shù)據(jù)?檢查寫入值是否正確
Address?=?FLASH_SAVE_ADDR;
MemoryProgramStatus?=?0x0;
while?(Address? {
data32?=?*(__IO?uint32_t*)Address;???//讀FLASH中的數(shù)據(jù),直接給出地址就行了。跟從內(nèi)存中讀數(shù)據(jù)一樣。

if?(data32?!=?DATA_32)
{
MemoryProgramStatus++;??
}

Address?=?Address?+?4;
}??
}
*/
//


/////////////////////////////////////////////////////////////////////////////////////////////////

//讀取指定地址的半字(16位數(shù)據(jù))
//faddr:讀地址
//返回值:對(duì)應(yīng)數(shù)據(jù).
u32?STMFLASH_ReadWord(u32?faddr)
{
???????return?*

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????7176??2015-10-23?10:09??stm32F4xxflash.c

?????文件???????2413??2015-10-23?10:27??stm32F4xxflash.h

-----------?---------??----------?-----??----

?????????????????9589????????????????????2


評(píng)論

共有 條評(píng)論