找回密码
 立即注册
查看: 274|回复: 5

使用ISP中的"收到用户命令后复位到ISP监控程序区"时也只是单片机重启.失败.(已解决)

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:505
  • 最近打卡:2025-05-01 06:09:51

15

主题

154

回帖

404

积分

中级会员

积分
404
发表于 2024-11-26 09:46:19 | 显示全部楼层 |阅读模式
使用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();  
}









回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-11-26 10:03:08 | 显示全部楼层
复位到ISP监控程序区
IAP_CONTR=0x60
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:505
  • 最近打卡:2025-05-01 06:09:51

15

主题

154

回帖

404

积分

中级会员

积分
404
发表于 2024-11-26 13:50:12 | 显示全部楼层
STCISP 点击 下载按钮后,用硬件按钮进行ISP复位::::::依然不行.
当KEY(P32)按下时holdkey_time计时变量在定时器中断中进行计时;当到达时间后,使用软件复位 IAP_CONTR = 0x60;//复位到系统区. 结果单片机只是重启后又跑起了代码.
while(!KEY)
            {
                if(holdkey_time>=20)
                {
                   //有没有这三句,结果一样↓
                   USBCON = 0x00;      //清除USB设置
                    USBCLK = 0x00;
                    IRC48MCR = 0x00;
                 //有没有这三句,结果一样↑

                    delay_ms(10);                           //检测到正确的命令序列后复位到系统区,此处的延时可省去
                    IAP_CONTR = 0x60;                       //复位到系统区
                    while (1);
                }
            }
            holdkey_time = 0;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:505
  • 最近打卡:2025-05-01 06:09:51

15

主题

154

回帖

404

积分

中级会员

积分
404
发表于 2025-1-17 14:50:26 | 显示全部楼层
jiujie.png

手册中也是这样给出的用法,为什么就是不行呢,单片机只是重启.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-1-17 16:32:59 | 显示全部楼层
用什么板子?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:505
  • 最近打卡:2025-05-01 06:09:51

15

主题

154

回帖

404

积分

中级会员

积分
404
发表于 2025-3-26 09:17:01 | 显示全部楼层
手动复位到系统区(按键是P32,代码中检测长按P32),添加了P30 P31置0后,使MCU重启时P30 P31 P32为低电平,符合手册中的提示,,,,,,可以正常使用了,,,,软件复位到系统区的还没有找到更可靠的办法
99.png



回复 支持 0 反对 1

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 00:15 , Processed in 0.150943 second(s), 85 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表