标题: 求救MSP430F169的flash的读写程序 [打印本页]
作者: hzejian 时间: 2015-3-31 15:34
标题: 求救MSP430F169的flash的读写程序
MSP430F169的flash的读写程序如下
void Flash_clr(int *ptr)
{
while ((FCTL3 & BUSY)!=0){};//先判忙
FCTL3 = FWKEY; //Lock = 0 ,FCTL3 =0X0A500
FCTL1 = FWKEY+ERASE; //Erase = 1 ,FCTL1 = 0X0A502
*ptr = 0; /* Erase flash segment */
//_EINT(); //因为擦除时间较长,为不影响主程序时钟中断
while ((FCTL3 & BUSY)!=0);
}
void Flash_wb(char*dataptr,char byte)
{
FCTL3 = FWKEY; //Lock = 0 ,FCTL3 =0X0A500
FCTL1 = FWKEY+WRT; // WRT = 1 ,FCTL1 = 0X0A540
*dataptr=byte; //字节写入
}
请问下高手红色字体的字母表示什么?在线等~
作者: hzejian 时间: 2015-3-31 16:29
自查到 谢啦 大家~
作者: admin 时间: 2015-3-31 17:24
红色字母的意思分享一下吗。
作者: mqwu 时间: 2015-4-1 17:56
Flash Memory 控制寄存器3的Lock 位的清零,Flash Memory 控制寄存器1的擦出位置位将本单独指定的Segment擦出, 楼主写的顺序写反了, 通常的顺序是下面这样的, 对SegmentA先擦出后写;
void write_SegA (uchar value)
{
char *Flash_ptr; // Flash Memory的地址指针
unsigned int i;
Flash_ptr = (char *) 0x1080; // 初始化地址指针;
FCTL1 = FWKEY + ERASE; // 将擦出位置位;
FCTL3 = FWKEY; // 清零Lock位;
*Flash_ptr = 0; // 写0 到这个Segment的所有内存;
FCTL1 = FWKEY + WRT; // 将写操作置位;
for (i=0; i<128; i++)
{
*Flash_ptr++ = value; // 写某一值到这个flash,一直到这个数据写完所有的地址单元为止,指针地址自动加1;
}
FCTL1 = FWKEY; // 清零写位, Disable 写使能;
FCTL3 = FWKEY + LOCK; // 上锁;
}
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |