STM8 EEPROM 块编程问题

[复制链接]
4740|3
 楼主| cgha 发表于 2009-10-28 08:41 | 显示全部楼层 |阅读模式
本帖最后由 cgha 于 2009-10-28 09:04 编辑

我在用EEPROM 块编程出现了问题,程序和设定如下
@eeprom U8 E2_RfID[5];


//以块写的方式写入ID
#pragma section (EE_CODE)
void SetRfID(void)
{
U8 i;
FLASH_DUKR = 0xAE;
FLASH_DUKR = 0x56;        //解锁
while((FLASH_IAPSR & 0x08) == 0 );//确认解锁

FLASH_CR2 |= 0x01;
FLASH_NCR2 &= (u8)(~0x01);    //标准模式(先执行块擦)
for(i=0;i<5;i++)
{
  E2_RfID = DevIDCode; //写入
}      
//while((FLASH_IAPSR &0x04) ==0);  //确认写结束
//FLASH_IAPSR &= ~0x08;       //重新写保护
}
#pragma section()
在project->settings->linker->input的ram segment中加入EE_CODE section,属性为-ic,在主程序开始加入_fctcpy('E');在仿真中一执行SetRfID就出现swim prog error 42004之类的错误。芯片为stm8s105c6。
baishuiyang 发表于 2014-4-20 18:08 | 显示全部楼层
现在解决了吧
yzhou_2011 发表于 2014-6-7 17:53 | 显示全部楼层
是死机的问题吗?
  1. #pragma section (EE_CODE)
  2. void SetRfID(void)
  3. {
  4. U8 i;
  5. FLASH_DUKR = 0xAE;
  6. FLASH_DUKR = 0x56;        //解锁
  7. while((FLASH_IAPSR & 0x08) == 0 );//确认解锁

  8. // 问题是不是出现在以下两行代码?
  9. FLASH_CR2 |= 0x01;
  10. FLASH_NCR2 &= (u8)(~0x01);    //标准模式(先执行块擦)
  11. for(i=0;i<5;i++)
  12. {
  13.   E2_RfID = DevIDCode; //写入
  14. }      
  15. //while((FLASH_IAPSR &0x04) ==0);  //确认写结束
  16. //FLASH_IAPSR &= ~0x08;       //重新写保护
  17. }
hugo0chen 发表于 2014-6-10 10:35 | 显示全部楼层
发帖不结贴,真可耻
您需要登录后才可以回帖 登录 | 注册

本版积分规则

561

主题

719

帖子

0

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