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

[复制链接]
4735|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()函数有问题,你可以看看这个函数的汇编代码,是否有被优化掉的指令?
香水城 发表于 2010-8-3 10:21 | 显示全部楼层
如果断电后你写入的数据还可以通过STLINK调试看见,说明你的EEPROM_READ()函数有问题,你可以看看这个函数的汇编代码,是否有被优化掉的指令?
 楼主| honami520 发表于 2010-8-3 10:57 | 显示全部楼层
我狂汗,还真的是被优化掉了,难怪打断点的时候都不能在EEPROM_READ()这读呢!汗,那我现在程序不能优化了不是!
香水城 发表于 2010-8-3 11:10 | 显示全部楼层
试试看把这个函数写成一个宏定义,例如:

#define EEPROM_READ(addr) (*((u8*)(EEP_BASE + addr)))
tieguanyin2008 发表于 2010-9-22 18:52 | 显示全部楼层
被优化不一定是cut了,可能和其它部分合并了。
xsgy123 发表于 2010-9-22 19:29 | 显示全部楼层
香主似乎总是一句话就说中问题的核心了:lol
wxx116zh 发表于 2010-12-1 11:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

189

帖子

2

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