#include "bsp_paraid.h" #include "../clib/Clib.h" #include "../clib/bit.h" #include "../msp/msp_eeprom.h" #include "../msp/uart0.h" void L1_Iap_erase(vU16 addr) { EA = 0; L0_Iap_Erase(addr); EA = 1; } void L1_Iap_Write_array(vU16 addr,U8 *buf,U8 len) { U8 i = 0; EA = 0; for(i=0;i D_paper_150at_bottom) { goto GOTO_PARA_OK; } } } } GOTO_PARA_ERRO: L1_Iap_Write_us(D_paraAdd0_paper150,D_paper_150at); L1_Iap_Write_us(D_paraAdd1_paper150,D_paper_150at); GOTO_PARA_OK: ; #endif ///nothing } void L1_Iap_Write_us(vU16 addr,vU16 val) { EA = 0; /********* IAP_CONTR = WT_12M; //使能IAP IAP_CMD = 3; //设置IAP擦除命令 IAP_ADDRL = addr; //设置IAP低地址 IAP_ADDRH = addr >> 8; //设置IAP高地址 IAP_TRIG = 0x5a; //写触发命令(0x5a) IAP_TRIG = 0xa5; //写触发命令(0xa5) _nop_(); // _nop_(); IAP_CMD = 2; //设置IAP写命令 IAP_DATA = dat; //写IAP数据 IAP_TRIG = 0x5a; //写触发命令(0x5a) IAP_TRIG = 0xa5; //写触发命令(0xa5) _nop_(); L0_Iap_Idle(); //关闭IAP功能 ***************/ L0_Iap_Erase(addr); L0_Iap_Program(addr,val>>8); L0_Iap_Program(addr+1,val&0x00ff); EA = 1; } void L1_Iap_Read_us(vU16 addr,vU16 *val) { EA = 0; *val = L0_Iap_Read(addr); *val <<= 8; *val |= L0_Iap_Read(addr+1); EA = 1; }