本帖最后由 rgb365 于 2013-3-2 17:17 编辑
曾经用过st的单片机,对其天书般的文档感觉很不爽,这次用到EEPROM,又被折腾得晕头转向。以下是相关代码和调试情况,请高手帮忙看下:
单片机为STM8L101F3,按手册介绍,其EEPROM为8k(DATA区占2k),末地址为0x9ffff。
调试环境为STVD+COSMIC
仿真器为ST-LINK
void testEEPROM(void) { //测试EEPROM的字节读写功能
unsigned char byteTest;
byteTest = *((@far byte*) 0x9fff);//此句能正确读取0x9fff中的数据,
//且该数据能通过memory窗口进行改写
//FLASH_CR2=0x01; //此句执行时仿真器会报告响应超时,只好去掉
FLASH_DUKR=0xAE; //此句执行前FLASH_IAPSR的初始值为0x4a
FLASH_DUKR=0x56; //即DUL位上电后为1,不知何故?
while (!(FLASH_IAPSR & 0x08)); //此句能正常跳出while循环
*((@far byte*) 0x9fff) = 0x55; //此句执行前后,memory窗口显示0x9fff的值不变
while (!(FLASH_IAPSR & 0x04));
byteTest = *((@far byte*) 0x9fff);//byteTest还是原来的值,0x55未被正常写入
}
STM8L101.H文件中相关寄存器的定义如下:
DEF_8BIT_REG_AT(FLASH_IAPSR,0x5054);
|