if(strstr(pComDbg.Revdata,"iap\r\n") != NULL)//判断串口接受命令行
{
DPRINTF(("Count Down:30S\r\n"));
pComDbg.Param16[0] = 600;
while((pComDbg.Param16[0]--) && (SysParam.RevFlag == 0))
{
ProB_100mS_WatchDogFeed_Soc(); //启动看门狗 所以需要喂狗
DelayMs(50); // 50*600 = 30000mS = 30S
if(pComDbg.Param16[0]%20 == 0) //未关闭串口时,秒周期打印倒计时
DPRINTF(("Count Down:%002dS\r\n",pComDbg.Param16[0]/20));
}
StcIap();
}
GLOBAL void StcIap(void)/*STC不断电升级*/
{
ISP_CONTR = 0X60;
}
DelayMs(50);//使用定时器系统节拍计数延时
SysParam.RevFlag 变量为串口中断接受置1操作。
pComDbg.Param16[0] 变量为u16共用变量。
实现功能:
通过上位机串口输入iap进入倒计时,关闭串口在倒计时30S之内使用ISP-STC下载。
串口发送任意数据重启单片机。
|