打印
[STM8]

请教STM8S103读取内部EEPROM为什么不行?

[复制链接]
3836|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
honami520|  楼主 | 2010-8-2 15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void EEP_INIT(void)
{
    FLASH_CR1 = 0x00;
    FLASH_CR2 = 0x00;
    FLASH_NCR2 = 0xff;
    FLASH_DUKR = MASS_KEY1;
    FLASH_DUKR = MASS_KEY2;
    while(!FLASH_IAPSR_DUL);        /*等待写保护解锁*/
}

void EEPROM_WRITE(u8 addr,u8 dat)
{
    *((u8*)(addr + EEP_BASE)) = dat;   
    while(!FLASH_IAPSR_EOP);        /*等待写完成*/
}

u8 EEPROM_READ(u8 addr)
{
    return(*((u8*)(EEP_BASE + addr)));
}

上面是我的代码,其中EEPROM_WRITE()函数可以正常操作任意地址的字节数据了。但是EEPROM_READ()函数怎么都读不到东西。希望知道的人给提示一下啊!
沙发
happya1| | 2010-8-2 16:34 | 只看该作者
你读不出来怎么知道写进去是对的啊?

使用特权

评论回复
板凳
honami520|  楼主 | 2010-8-3 09:19 | 只看该作者
拜托,楼上的,我用STLINK调试的啊,可以查看EEPROM的,为什么没人告诉我怎么读啊???

使用特权

评论回复
地板
香水城| | 2010-8-3 10:21 | 只看该作者
如果断电后你写入的数据还可以通过STLINK调试看见,说明你的EEPROM_READ()函数有问题,你可以看看这个函数的汇编代码,是否有被优化掉的指令?

使用特权

评论回复
5
香水城| | 2010-8-3 10:21 | 只看该作者
如果断电后你写入的数据还可以通过STLINK调试看见,说明你的EEPROM_READ()函数有问题,你可以看看这个函数的汇编代码,是否有被优化掉的指令?

使用特权

评论回复
6
honami520|  楼主 | 2010-8-3 10:57 | 只看该作者
我狂汗,还真的是被优化掉了,难怪打断点的时候都不能在EEPROM_READ()这读呢!汗,那我现在程序不能优化了不是!

使用特权

评论回复
7
香水城| | 2010-8-3 11:10 | 只看该作者
试试看把这个函数写成一个宏定义,例如:

#define EEPROM_READ(addr) (*((u8*)(EEP_BASE + addr)))

使用特权

评论回复
8
tieguanyin2008| | 2010-9-22 18:52 | 只看该作者
被优化不一定是cut了,可能和其它部分合并了。

使用特权

评论回复
9
xsgy123| | 2010-9-22 19:29 | 只看该作者
香主似乎总是一句话就说中问题的核心了:lol

使用特权

评论回复
10
wxx116zh| | 2010-12-1 11:33 | 只看该作者
mark

使用特权

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

本版积分规则

25

主题

189

帖子

2

粉丝