微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430F149的内部Flash

MSP430F149的内部Flash

时间:11-24 来源:互联网 点击:
MSP430F149内部的memory结构,60K Flash+2K RAM。Flash分为主存储区和信息存储区,操作都一样,只是主存储区每个段512字节,而信息存储区为128字节,方便擦写。



当我们有数据要保存到Flash存储器时,要先对目标段进行整段擦除操作,擦除操作使的对应段FLASH存储器变成全“1”。应当注意的是,此flash的操作频率为257 kHz到 476 kHz,时钟源可选择,因此我们做时钟分频时应当保证频率在这之间,以下为我编写的参考程序。

void Flash_erase(uint addr)
{//段擦除,512bytes一段
uchar s;
s=__get_interrupt_state();//保存当前中断状态
__disable_interrupt();
while(FCTL3&BUSY);
FCTL3=FWKEY;

FCTL1=FWKEY+ERASE;
*(uchar*)addr=0;
while(FCTL3&BUSY);
FCTL3=FWKEY+LOCK;
__set_interrupt_state(s);//恢复中断状态
}

void Flash_write(uint addr,uchar dat)
{//单字节写入
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)
{//读取到数组,此处堆栈应改大
uint i;
for(i=0;i *(R+i)=*(uchar*)(addr+i);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top