- 打卡等级:初来乍到
- 打卡总天数:9
- 最近打卡:2024-04-12 11:10:59
注册会员
- 积分
- 98
|
unsigned long t1;
unsigned long t2;
unsigned long i;
unsigned long i2;
复制stc32G手册内容
void IapIdle()
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRE = 0x00;
IAP_ADDRH = 0x00;
IAP_ADDRL = 0x00;
}
char IapRead(unsigned long addr)
{
char datt;
IAP_CONTR = 0x80;
IAP_TPS = 24;
IAP_CMD = 1;
IAP_ADDRL = addr;
IAP_ADDRH = addr>>8;
IAP_ADDRE = addr>>16;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
_nop_();
_nop_();
_nop_();
datt = IAP_DATA;
IapIdle();
return datt;
}
void IapProgram(unsigned long addr,char datt)
{
IAP_CONTR = 0x80;
IAP_TPS = 24;
IAP_CMD = 2;
IAP_ADDRL = addr;
IAP_ADDRE = addr>>16;
IAP_ADDRH = addr>>8;
IAP_DATA = datt;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
_nop_();
_nop_();
_nop_();
datt = IAP_DATA;
IapIdle();
}
void IapErase(unsigned long addr)
{
IAP_CONTR = 0x80;
IAP_TPS = 24;
IAP_CMD = 3;
IAP_ADDRL = addr;
IAP_ADDRE = addr>>16;
IAP_ADDRH = addr>>8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
_nop_();
_nop_();
_nop_();
IapIdle();
}
void main(void)
{
i = 1;
i2 = 2;
IapErase(0x8000);
IapProgram(0x8000,i);
t1 = IapRead(0x8000);
IapErase(0x9000);
IapProgram(0x9000,i2);
t2 = IapRead(0x9000);
}
先写进EEPROM然后读出是对的。
void main(void)
{
t1 = IapRead(0x8000);
t2 = IapRead(0x9000);
}
然后改成这样再读 t1,t2都是 0,是不是没写进去?
请问是什么原因呢?
我是自学新手,论坛的其它例子还不会转换。 |
|