z18497 发表于 2013-12-22 08:47:04

STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

请问大家STM8用的是STVD的哪个版本,我用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

勒布朗 发表于 2013-12-24 20:41:15

RE:STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

确定你的IIC交换数据正常?确定写的地址没有超出范围

有缘于你 发表于 2013-12-25 18:44:24

RE:STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

先找找有没有好使的例程试试

fengye5340 发表于 2013-12-26 09:28:07

RE:STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

自己用程序实现EEPROM模块的读写,那样更稳定一些:)

noley_li 发表于 2013-12-26 09:49:42

RE:STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

是用内部的EEPROM码?IAR的例程,可以参考一下.
// 定义EEPROM:EEP_LEN:数据长度, EEP_STARTADDR:起始地址(0x4000)
__no_init __near unsigned char EEP_Data@EEP_STARTADDR;

// EEPROM解锁
void EEP_vUnlock(void)
{
    FLASH_DUKR = EEP_MASS1;                         //锁1密钥
    FLASH_DUKR = EEP_MASS2;                         //锁2密钥
    while ( !(FLASH_IAPSR&0x08) ) asm("NOP");       //等待解密就绪
}
// 读数据
void EEP_vRead( unsigned char *p )
{
    char j;
    for ( j = 0; j < EEP_LEN; j++, p++) {
      *p = EEP_Data;
      p++;
    }
}
// 写数据
void EEP_vWrite(unsigned char *p)
{
    unsigned char j;
    _di_();             // 擦写的时候须关闭中断
    EEP_vUnlock();
    for ( j = 0; j < EEP_LEN; j++, p++ ) {
      EEP_Data = *p;
    }
    // 短延时等待
    j = 20;
    while ( --j ) {
      _nop_();_nop_();_nop_();_nop_();_nop_();
    }
    FLASH_IAPSR &= 0xF7   //关闭eep
    _ei_();               // 中断回复
}

wkuang 发表于 2013-12-31 22:15:13

RE:STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

1、如果是死机了,首先检查写入的地址有没有越界,用Assert语句跳转到异常处理循环中,导出死机堆栈,看看死机的位置,或者访问无效地址;
2、做个函数轨迹跟踪,看看死机的函数和位置;再排查代码。
如果使用库老是死机,建议自己模拟总线写一个函数试试。

温柔的武士刀 发表于 2013-12-31 22:25:56

RE:STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象

楼主用例程试一下吧
页: [1]
查看完整版本: STVD版本,用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象