打印

擦除掉,写入要存储的数据

[复制链接]
1175|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2016-5-5 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dengdc| | 2016-5-5 20:54 | 只看该作者
你现在怎么搞的

使用特权

评论回复
板凳
wyjie|  楼主 | 2016-5-5 20:56 | 只看该作者
我在擦除前加了FCTL3&=~LOCKA;,但是单步执行时到这儿就不执行了,怎么做呢?

使用特权

评论回复
地板
wuhany| | 2016-5-5 21:01 | 只看该作者
楼主的意思是给FLSAH解锁吧

使用特权

评论回复
5
wyjie|  楼主 | 2016-5-5 21:04 | 只看该作者
恩呢

使用特权

评论回复
6
lizye| | 2016-5-5 21:08 | 只看该作者
解锁用:FCTL3=FWKEY;

使用特权

评论回复
7
jiaxw| | 2016-5-5 21:11 | 只看该作者
A段一般不要动它吧,不然到后边的会很复杂的

使用特权

评论回复
8
wyjie|  楼主 | 2016-5-5 21:14 | 只看该作者

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段擦不掉啊!

使用特权

评论回复
9
spark周| | 2016-5-5 21:14 | 只看该作者
再把你加进来的cpp文件手工去掉,看一下什么效果呀

使用特权

评论回复
10
午夜粪车| | 2016-5-5 21:17 | 只看该作者
BCD段能擦除吗?

使用特权

评论回复
11
wyjie|  楼主 | 2016-5-5 21:20 | 只看该作者
可以的,就是A段擦除不了!

使用特权

评论回复
12
zhaoxqi| | 2016-5-5 21:20 | 只看该作者
这个头文件是TI自带的头文件,不存在提示的那种低级错误:比如缺括号、分号 、声明等错误。

使用特权

评论回复
13
huangchui| | 2016-5-5 21:23 | 只看该作者
对A段要求LOCKA= 0,方可擦除。所有你程序中需要对A段进行特别处理,先解锁然后擦除。

使用特权

评论回复
14
huangchui| | 2016-5-5 21:25 | 只看该作者
MSP430G2用户手册里有说明,开始竟然没发现

使用特权

评论回复
15
jlyuan| | 2016-5-5 21:29 | 只看该作者
问一下哈,你观察内存里面的时候,擦除后的数据是不是全为0xffff,但是擦除时操作是:空写的为0x00,那擦除后内存数据应该是0x0000才对啊,没找到解释的资料,还有,进行字节修改后,该段的所有高字节(即奇地址)为0xff,低字节(即偶地址)为0x00,这又是什么情况啊?,写入的数据,读出的数据,以及修改的数据,都正确,就是不明白刚才提的那两个问题。

使用特权

评论回复
16
dengdc| | 2016-5-5 21:31 | 只看该作者
A段的话万一要擦除的话,原来保存的参数的不要变的

使用特权

评论回复
17
wyjie|  楼主 | 2016-5-5 21:33 | 只看该作者
嗯,知道了,多谢大家

使用特权

评论回复
18
mmbs| | 2016-5-5 21:55 | 只看该作者
参考一下相关的代码设计吧

使用特权

评论回复
19
pmp| | 2016-5-5 21:56 | 只看该作者
有相关的代码可以参考的。

使用特权

评论回复
20
i1mcu| | 2016-5-5 21:56 | 只看该作者
为什么不用eeprom呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

927

主题

12706

帖子

5

粉丝