[应用相关] 写入要存储的数据

[复制链接]
 楼主| huanghuac 发表于 2020-7-24 19:45 | 显示全部楼层 |阅读模式
查资料知道2553的flash分4段,每段64字节,共ABCD四段,其中“A 段包含校准数据。在复位之后,为A 段提供针对编程及擦除的保护。可以将其解锁,但如果需要器件专用的
校准数据,应注意不要将该段擦除。”,现在想擦除掉,写入要存储的数据,可是怎么做呢?
llljh 发表于 2020-7-24 19:51 | 显示全部楼层
我在擦除前加了FCTL3&=~LOCKA;,但是单步执行时到这儿就不执行了
llljh 发表于 2020-7-24 19:54 | 显示全部楼层
楼主的意思是给FLSAH解锁吧
chenjunt 发表于 2020-7-24 19:57 | 显示全部楼层
A段一般不要动它吧,不然到后边的会很复杂的
lium 发表于 2020-7-24 20:00 | 显示全部楼层
void Falsh_Erase(char *Addr)                             
{  
    while((FCTL3&BUSY) == BUSY);
    FCTL1 = FWKEY+ERASE;                                                                                                                                                                                                         
    FCTL3 = FWKEY;      
    *Addr=0;  
    FCTL1 = FWKEY;
    FCTL3 = FWKEY+LOCK;
    while((FCTL3&BUSY) == BUSY);
}
//向指定地址写一个字节
void Falsh_WriteB(char *Addr,uint8 nValue)      
{
    FCTL1 = FWKEY+WRT;                            // 允许写
    FCTL3 = FWKEY;                                // 解锁
    while((FCTL3&BUSY) == BUSY);
    *Addr = nValue;
    FCTL1 = FWKEY;
    FCTL3 = FWKEY+LOCK;                           // 锁定
    while((FCTL3&BUSY) == BUSY);
}
// 读flash 指定地址的字节
uint8 Flash_ReadB(char *Addr)                     
{
    uint8 RData;
    RData = *Addr;
    return RData;
}
这是我的代码,因为我要存储的数据正好256字节,要将ABCD四段全擦除,
Falsh_Erase((char *)0x1000);
Falsh_Erase((char *)0x1040);
Falsh_Erase((char *)0x1080);
Falsh_Erase((char *)0x10C0);//A段
但A段擦不掉啊!
wangpe 发表于 2020-7-24 20:04 | 显示全部楼层
把你加进来的cpp文件手工去掉
huwr 发表于 2020-7-24 20:10 | 显示全部楼层

对A段要求LOCKA= 0,方可擦除。所有你程序中需要对A段进行特别处理,先解锁然后擦除。
tian111 发表于 2020-7-24 20:13 | 显示全部楼层
A段的话万一要擦除的话,原来保存的参数的不要变的
stly 发表于 2020-7-24 20:16 | 显示全部楼层
官方代码 试试
 楼主| huanghuac 发表于 2020-7-24 20:19 | 显示全部楼层

哦,那我就知道怎么回事了,多谢大家
gejigeji521 发表于 2020-7-24 21:10 | 显示全部楼层
不懂不懂。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

772

主题

8473

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

772

主题

8473

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部