新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430F149的內部Flash

MSP430F149的內部Flash

作者: 時間:2016-11-24 來源:網(wǎng)絡 收藏
MSP430F149內部的memory結構,60K Flash+2K RAM。Flash分為主存儲區(qū)和信息存儲區(qū),操作都一樣,只是主存儲區(qū)每個段512字節(jié),而信息存儲區(qū)為128字節(jié),方便擦寫。

本文引用地址:http://2s4d.com/article/201611/320875.htm


當我們有數(shù)據(jù)要保存到Flash存儲器時,要先對目標段進行整段擦除操作,擦除操作使的對應段FLASH存儲器變成全“1”。應當注意的是,此flash的操作頻率為257 kHz到 476 kHz,時鐘源可選擇,因此我們做時鐘分頻時應當保證頻率在這之間,以下為我編寫的參考程序。

void Flash_erase(uint addr)
{//段擦除,512bytes一段
uchar s;
s=__get_interrupt_state();//保存當前中斷狀態(tài)
__disable_interrupt();
while(FCTL3&BUSY);
FCTL3=FWKEY;

FCTL1=FWKEY+ERASE;
*(uchar*)addr=0;
while(FCTL3&BUSY);
FCTL3=FWKEY+LOCK;
__set_interrupt_state(s);//恢復中斷狀態(tài)
}

void Flash_write(uint addr,uchar dat)
{//單字節(jié)寫入
uchar s;
s=__get_interrupt_state();
__disable_interrupt();
while(FCTL3&BUSY);
FCTL3=FWKEY;
FCTL1=FWKEY+WRT;
*(uchar*)addr=dat;
while(FCTL3&BUSY);
FCTL1=FWKEY;
FCTL3=FWKEY+LOCK;
__set_interrupt_state(s);
}

void Flash_read(uint addr,uint len)
{//讀取到數(shù)組,此處堆棧應改大
uint i;
for(i=0;i *(R+i)=*(uchar*)(addr+i);
}



關鍵詞: MSP430F149內部Flas

評論


技術專區(qū)

關閉