| /****************************************Copyright (c)**************************************************<br />**                               IAP 写内部FLASH函数 API<br />**<br />*******************************************************************************************************<br />*/<br />#include  "LPC214x.h"<br />#include "BlueFengUser.h"<br />#include "iapuser.h"<br /><br />OS_TID Iap_Task;                        /* IAP任务句柄 */<br /><br />#define SYS32Mode        0x1F<br />#define IRQ32Mode        0x12<br />#define FIQ32Mode        0x11<br />#define I_Bit     0x80            ; when I bit is set, IRQ is disabled<br />#define F_Bit     0x40            ; when F bit is set, FIQ is disabled<br />#define IAPMode          0x92      ;(IRQ32Mode|I_Bit)<br /><br /><br />static unsigned int sysreg;        /* used as LR register */<br />#define IENABLE __asm { MRS sysreg, SPSR; MSR CPSR_c, #SYS32Mode; }<br />#define IDISABLE __asm { MSR CPSR_c, #0x92; MSR SPSR_cxsf, sysreg; }<br /><br />const unsigned int  LED=(1<<24);          //P1.24控制LED,低电平点亮<br />                <br /><br /><br /><br />void testiap(void){<br /><br />  unsigned char IapBuffer[256];<br />  unsigned int i;<br />  for(i=0; i<256; i++){<br />        IapBuffer = i;<br />    }<br /> os_dly_wait(1);<br /><br />   IDISABLE<br />  Erase1Sector(0x8000);<br />  ProgramPage(0x8000,256,IapBuffer);<br />IENABLE<br />os_dly_wait(1);<br /><br />}<br /><br /><br />void IAP_TASK(void){<br />  for (;;) {<br /><br />    //os_evt_wait_or(0xFFFF, 0xFFFF);         /* Wait for an Event */<br /><br />            IO1CLR=LED;<br />     os_dly_wait(10);<br /><br />            IO1SET=LED;<br />    testiap();<br />     os_dly_wait(10);<br />    }<br />}<br /><br />void Iap_task_create(void){<br />        <br />    PINSEL2=PINSEL2&(~0x08);<br />    IO1DIR=LED;<br /><br />   Iap_Task = os_tsk_create(IAP_TASK, 2);<br />}<br /><br /><br /><br /> |