在线时间0 小时
UID333071
ST金币0
蝴蝶豆0
注册时间2011-12-8
新手上路
- 最后登录
- 1970-1-1
|
发表于 2013-12-26 09:49:42
|
显示全部楼层
a0a.1 0b0c
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_(); // 中断回复
} |
|