打印
[STM8]

内部EEPROM问题

[复制链接]
1037|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
爱好学习者|  楼主 | 2016-3-24 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.程序中写入1024个字节,查看Memory中数据都写入成功
2.在读取的时候发现,前四个字节变成了0x00,这是为什么????
代码如下:
void Write_EEPROM(ui j,uc word)
{
        uc *p = (uc*)j;        
  do
  {
   FLASH_DUKR = 0xAE; // 写入第一个密钥
   FLASH_DUKR = 0x56; // 写入第二个密钥
        }while(((FLASH_IAPSR & 0x08) == 0));   
  *p = word;
        while(((FLASH_IAPSR & 0x04) == 0)) ;  // 等待写操作成功
  FLASH_IAPSR |= 0x08;
}

//读取EEPROM
uc Read_EEPROM(ui j)
{
        uc *p = (uc*)j; //指针p指向芯片内部的EEPROM第一个单元
        return *p;
}

沙发
JY-DX-JY| | 2016-3-24 11:06 | 只看该作者
只有前4个字节不对吗?其他1000多个都对?

使用特权

评论回复
板凳
爱好学习者|  楼主 | 2016-3-24 11:10 | 只看该作者
是的,读出来的就前四个都是00,其他的数据都对

使用特权

评论回复
地板
mmuuss586| | 2016-3-24 12:46 | 只看该作者
换个起始地址看看;

使用特权

评论回复
5
爱好学习者|  楼主 | 2016-3-24 13:45 | 只看该作者
换了起始地址了,也是开始的四个是00,后面的就不是了,这是什么原因啊

使用特权

评论回复
6
popeye021| | 2016-3-24 14:47 | 只看该作者
爱好学习者 发表于 2016-3-24 13:45
换了起始地址了,也是开始的四个是00,后面的就不是了,这是什么原因啊

那你只写前4个数据呢,然后再多写几个呢,看看什么时候前4个数据变化

使用特权

评论回复
7
爱好学习者|  楼主 | 2016-3-24 17:40 | 只看该作者
popeye021 发表于 2016-3-24 14:47
那你只写前4个数据呢,然后再多写几个呢,看看什么时候前4个数据变化

写四个是没问题,但是多写几个就会有问题

使用特权

评论回复
8
popeye021| | 2016-3-24 17:55 | 只看该作者
爱好学习者 发表于 2016-3-24 17:40
写四个是没问题,但是多写几个就会有问题

那你就测试到写几个的时候会出问题,估计是你软件的问题

使用特权

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

本版积分规则

19

主题

73

帖子

0

粉丝