/*=====================================================================================================*/
int main( void )
{
  SystemInit();
  GPIO_Config();

  if(KEY_BO == 1) {
    IAP_Init();
    IAP_Download();
    Delay_10ms(10);
    IAP_JumpToApp();
  }
  else {
    if(((*(vu32*)(IAP_APP_ADDR)) & 0x2FFE0000 ) == 0x20000000)
      IAP_JumpToApp();
  }

  while(1) {
    
  }
}
Beispiel #2
0
/*******************************************************************************
 * 名    称: IAP_Exit()
 * 功    能: 退出IAP检测
 * 入口参数:
 * 出口参数: 无
 * 作   者: 无名沈
 * 创建日期: 2016-01-09
 * 修    改: 
 * 修改日期: 
 *******************************************************************************/
void IAP_Exit(u8 timeout)
{    
    if ( Iap.Status == IAP_STS_DEF )
        return;
    if ( Iap.Status == IAP_STS_SUCCEED )
        return;
    if ( Iap.Status == IAP_STS_FAILED )
        return;
    /***********************************************
    * 描述: 串口通讯超时计数器,收到口数据时会清零,此处只增加
    */
    if ( Iap.TimeOut < timeout ) {
        Iap.TimeOut++;
    } else {
        /***********************************************
        * 描述: 
        */ 
        IAP_JumpToApp(0);        
        IAP_SetStatus(IAP_STS_FAILED);
        IAP_FileInfoInit();
    }
}