1. IAP11F06 实际FLASH大小为6K,且FLASH和EEPROM共用6K空间。
2. addr不能直接为0
擦除扇区,addr不能直接为0,0表示扇区首地址实际为IAP11F06程序区的最开始地址,会把程序擦除。所以要根据实际占用FLASH大小,把后面的FLASH空间作为EEPROM
IapEraseSector(addr);
void IapEraseSector(uint16_t addr)
{
IAP_CONTR = ENABLE_IAP;
IAP_CMD = CMD_ERASE;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}