你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8L101 EEPROM读写的问题

[复制链接]
刘喆 提问时间:2016-10-13 18:42 /
用下面的代码在仿真器跟踪状态下读写正常,芯片独立运行时不能写入。请高手指点一下。谢谢
//CPU: STM8L101F3P6 主时钟设为2M
#define EEPROM_ADDR 0x9800
//---------------------------------------------------------------------
u8 Init_EEPROM(void)
{
    u16 tc=0;
      do
      {
         if(tc<0xffff) tc++; else return 1;
         FLASH->DUKR=0xae;
         FLASH->DUKR=0x56;
         FLASH->CR2=0x00;
      }while((FLASH->IAPSR & 0x08)==0);
      return 0;
}
//-----------------------------------------------------------------------

u8 EEPROM_Read(u16 Addr,u8 *RxBuffer,u8 Length)
{
        u8 *EEP;
        EEP=(u8 *)(EEPROM_ADDR+Addr);
        if(Init_EEPROM()) return 1;
        while(Length--){
            *RxBuffer++=*EEP++;
        }
        FLASH->IAPSR &= (uint8_t)FLASH_MemType_Data;//0xf7 lock
        return 0;
}
//-----------------------------------------------------------------------
u8 EEPROM_Write(u16 Addr,u8 *RxBuffer,u8 Lenth)
{
        u16 T=0;
        u8 *EEP;
        EEP=(u8 *)(EEPROM_ADDR+Addr);
        if(Init_EEPROM()) return 1;
        while(Lenth--){
            *EEP++=*RxBuffer++;
            T=0;
            while((!(FLASH->IAPSR&0x04))&(T<0xFFFF))   T++;
            if(T==0xFFFF)return 1;
        }
        FLASH->IAPSR &= (uint8_t)FLASH_MemType_Data; // 0xf7 lock
        return 0;
}
//-----------------------------------------------------------------------


收藏 2 评论6 发布时间:2016-10-13 18:42

举报

6个回答
仙景 回答时间:2016-10-14 08:34:42
eeprom不要仿真看,eeprom速度慢的要死,最好是打印出来
刘喆 回答时间:2016-10-14 13:13:51
//-----------------------------------------------------------------------
u8 EEPROM_Write(u16 Addr,u8 *RxBuffer,u8 Length)
{
    u16 T=0;
    uint8_t i=0;
    u8 *EEP;
    EEP=(u8 *)(EEPROM_ADDR+Addr);
    FLASH->CR1 = 0x00;
    FLASH->CR2 = 0x00;
    while((FLASH->IAPSR&FLASH_FLAG_PUL)==0)
    {
       FLASH->PUKR = 0x56;
       FLASH->PUKR = 0xAE;
     }
    for(i=0;i<Length;i++)
    {
       *EEP++=*RxBuffer++;
       T=0;
       while((FLASH->IAPSR)&FLASH_FLAG_EOP==0){
         if(T<0xffff) T++;
         else return 1;
       };
     }
     FLASH->IAPSR &= 0xFD;
     return 0;
}
//-----------------------------------------------------------------------
用这段代码可以写STM8L101-EEPROM
ynwscfsfi 回答时间:2016-10-15 11:08:30
电压是否正常
samhong 回答时间:2016-10-15 13:35:24
eeprom不要仿真看,直接多接几个LED观察,
Draway 回答时间:2017-4-25 15:24:22
请问楼主,SMT8L101读写 EEPROM的问题解决没有呢?我也是遇到您类似的问题,不能写EEPROM
robter 回答时间:2018-2-11 20:10:50
我也遇到这样问题,楼主如何解决的?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版