- 打卡等级:以坛为家II
- 打卡总天数:505
- 最近打卡:2025-05-01 06:09:51
中级会员
- 积分
- 404
|
使用ISP中的"收到用户命令后复位到ISP监控程序区"时单片机会重启,然后又跑起了代码.只是重启,STCISP软件一直是在检测中.
工程环境:8H8K64U ,30MHZ,使用了stc_usb_cdc_8h_xdata.LIB 库实现的CDC,
请问这个是什么问题造成的? 单片机没有控制电源断电,电源是直通模式, 这一点不用考虑.
注:已选择上电复位使用较长延时
因为使用了官方USB库,所以不能直接使用官方默认的命令"@STCISP#",要使用一个自定义的命令("@ABCDEF#"),并在数据接收处理函数中加入自定义命令处理的过程
if(bUsbOutReady)
{
if(UsbOutBuffer[0]=='@')
{
if(UsbOutBuffer[1]=='A')
{
if(UsbOutBuffer[2]=='B')
{
if(UsbOutBuffer[3]=='C')
{
if(UsbOutBuffer[4]=='D')
{
if(UsbOutBuffer[5]=='E')
{
if(UsbOutBuffer[6]=='F')
{
if(UsbOutBuffer[7]=='#')
{
USBCON = 0x00; //清除USB设置
USBCLK = 0x00;
IRC48MCR = 0x00;
P30 = 0; //端口设置为低电平 不然有概率不能复位成功
P31 = 0; //端口设置为低电平 不然有概率不能复位成功
delay_ms(100);//加个延时
IAP_CONTR = 0x60; //复位到系统区 不管P32的状态,
}
}
}
}
}
}
}
}
usb_OUT_done();
}
|
|