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

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

[复制链接]
z18497 提问时间:2013-12-22 08:47 /
请问大家STM8用的是STVD的哪个版本,我用的是4.3.3,在写EEPROM时候老出现无效参数而死机的现象
收藏 评论6 发布时间:2013-12-22 08:47

举报

6个回答
勒布朗 回答时间: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_LEN]@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[j];
        p++;
    }
}
// 写数据
void EEP_vWrite(unsigned char *p)
{
    unsigned char j;
    _di_();             // 擦写的时候须关闭中断
    EEP_vUnlock();
    for ( j = 0; j < EEP_LEN; j++, p++ ) {
        EEP_Data[j] = *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时候老出现无效参数而死机的现象

楼主用例程试一下吧

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版