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

暂时解决:C32G2K128不停电下载的致命问题,离开USB线不插USB线无法启动

[复制链接]
  • TA的每日心情
    奋斗
    2024-3-20 22:27
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    31

    回帖

    106

    积分

    注册会员

    积分
    106
    发表于 2024-3-14 13:18:19 | 显示全部楼层 |阅读模式
    本帖最后由 dongchengya 于 2024-3-14 15:54 编辑

    暂时解决方案 见5楼

    STC32G2K128不停电下载,离开USB线无法启动

    1、  之前用的的 P3.2 对地短接下载 ,通过 STC-USB Writer (HID1)  ,
          串口扫描显示:类似于  COM12   ,由于无法恢复到原来的样子,具体显示的是什么记得不清了

    2、 之后用 USB-CDC/串口模式 ,默认自定义命令@STCISP#  ,收到命令后复位到监控程序区,是可以下载的
         此时扫描串口显示: STC-CDC1-UART1 (COM12)  ,2CDC +HID

       但是,现在 只要拔掉USB线,程序就不能启动,插上USB线测能正常启动,我总不能在设备上一直插着USB线 ,一直连接着上位机吧,

    想把这个不停电下载的更能去掉,但是没方法.


    谢谢 各位讨论



    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:56
  • 签到天数: 164 天

    [LV.7]常住居民III

    27

    主题

    1447

    回帖

    4512

    积分

    论坛元老

    积分
    4512
    发表于 2024-3-14 13:43:03 | 显示全部楼层
    本帖最后由 乘风飞扬 于 2024-3-14 13:44 编辑

    参考这个帖子:
    CDC串口初始化时如果没有插USB线,程序无法继续
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2493
    (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)


    不想继续使用不停电下载方式的话,把USB相关的代码删除即可。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-20 22:27
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    31

    回帖

    106

    积分

    注册会员

    积分
    106
     楼主| 发表于 2024-3-14 13:55:42 | 显示全部楼层
    本帖最后由 dongchengya 于 2024-3-14 13:56 编辑
    乘风飞扬 发表于 2024-3-14 13:43
    参考这个帖子:
    CDC串口初始化时如果没有插USB线,程序无法继续
    https://www.stcaimcu.com/forum.php?mod=v ...

    不想用 不停电下载,但是USB-CDC  当作一个USB的虚拟串口还是要用的,用来上传数据到上位机,
    在用这个不停电下载 之前,USB-CDC 串口还是正常使用的 哦,

    删除这个USB代码是不是太简单粗暴了

    我看看这个帖子,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-20 22:27
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    31

    回帖

    106

    积分

    注册会员

    积分
    106
     楼主| 发表于 2024-3-14 14:03:20 | 显示全部楼层
    本帖最后由 dongchengya 于 2024-3-14 15:48 编辑

    七搞八搞的 ,这的USB-CDC 原来是正常的,
    自从用了这个不停电下载,现在必须插着USB线,必须连接上位机,
    这个STC32G12K28 才能 在上电的时候正常运行,
    如果不连接USB ,不连接上位机,这个程序在上电的时候是不运行的,非得把USB线插上,
    不停电下载的方式,下载进去的代码,再不连接USB上位机的时候不能运行,
    发布不停电下载功能的人 居然不知道这个致命的问题,想改都改不回去。

    改都改不回去

    简直无语了

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-20 22:27
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    31

    回帖

    106

    积分

    注册会员

    积分
    106
     楼主| 发表于 2024-3-14 15:44:45 | 显示全部楼层
    本帖最后由 dongchengya 于 2024-3-14 16:26 编辑

    暂时的解决方案:
    这里拿 USB-CDC 线程来举个例子,具体见下面代码中的粗体字部分,修改后基本正常了,
    保留了 不停电下载功能,不停电下载的程序也可以在上电时不插USB线运行了。

    原因可能是  在等待USB完成配置时,如果没有接USB上位机,就会运行   continue;  (原来的 continue语句),
    continue 的作用是跳过后面的循环语句 ,导致后续的 vTaskDelay(200); (最后的一行代码)   无法得到执行,
    而是回过头去 接着执行 if(DeviceState != DEVSTATE_CONFIGURED);
    所以 如果STC32G12K28 没有连接上位机的USB时,一直没有执行 vTaskDelay(200); (最后的一行代码) ,导致没有出让线程时间 导致其他线程无法运行,这里是关键

    此时做出如下的修改后,USB-CDC 线程 每执行一次配置检查后 ,出让100毫秒的时间给其他线程 ,所以其他线程的程序可以正常运行,

    如果不是使用的FreeRTOS USB-CDC线程 ,则按照这个原理做出类似的改进。


        while(1)
        {
            EUSB = 1;
            if (DeviceState != DEVSTATE_CONFIGURED)  //等待USB完成配置

         //  continue;         //0      这一句是原来的     

            {              //1 以下四句是用来替换 原来的 这一句的  (也就是上面的一句)
                  vTaskDelay(100);    // 2
                 continue;       //  3
            }                                           // 4


            if  (bUsbOutReady)
            {
                usb_OUT_done();    //接收应答(固定格式)
                
                printf("OutNumber=0x%X\r\n",OutNumber);  //使用 printf 函数打印接收数据长度

                USB_SendData(UsbOutBuffer,OutNumber);    //发送数据缓冲区,长度
            }

              printf("cyan,18507132114" );
                                    
            vTaskDelay(200);
        }




    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-20 22:27
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    31

    回帖

    106

    积分

    注册会员

    积分
    106
     楼主| 发表于 2024-3-15 19:46:36 | 显示全部楼层
    回复 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-15 15:59 , Processed in 0.060659 second(s), 48 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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