蓝色海阳 发表于 2023-7-23 12:21:32

STC8H8K64U USB-CDC有没有串口接通标志位?

用USB_SendData这个函数给电脑上传数据时,当电脑串口助手打开对应串口时,上传数据正常,但如果没有打开串口,程序会卡到这个函数这里,一旦电脑串口助手打开串口,程序就正常了,所以想问一下在使用USB-CDC串口时有没有串口接通标志位?不知道能不能让串口接通时使用此函数,没有接通时不使用?

乘风飞扬 发表于 2023-7-24 09:57:39

通过判断 “DeviceState” 标志是否等于 “DEVSTATE_CONFIGURED” 来确定接口是否可以正常通信。
在主循环里判断:
    while (1)
    {
      delay_ms(1);
      KeyResetScan();   //长按P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码

      if(DeviceState != DEVSTATE_CONFIGURED)//等待USB完成配置
            continue;

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

            USB_SendData(UsbOutBuffer,OutNumber);    //发送数据缓冲区,长度
      }
    }
或者在初始化里判断:
while(DeviceState != DEVSTATE_CONFIGURED);//等待USB完成配置

蓝色海阳 发表于 2023-7-24 11:57:26

USB完成配置,这个有的,要想cdc通信,首先得USB完成配置,我是想问如何判断串口助手有没有打开串口,当打开串口时我这边程序是正常的,当关闭串口时程序会卡到USB_SendData这个函数里,所以我想知道如何判断串口助手有没有打开串口,我是想当串口助手打开串口时(先判断一下上位机串口打开了)再使用USB_SendData这个函数给电脑发数据

神农鼎 发表于 2023-7-24 12:05:29

先升级这个
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.91Z.zip
其他再说

蓝色海阳 发表于 2023-7-24 14:12:09

神农鼎 发表于 2023-7-24 12:05
先升级这个
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.91Z.zip
其他再说

好的,这个软件更新的频率有点高{:smile:}

乘风飞扬 发表于 2023-7-24 14:35:01

蓝色海阳 发表于 2023-7-24 11:57
USB完成配置,这个有的,要想cdc通信,首先得USB完成配置,我是想问如何判断串口助手有没有打开串口,当打 ...

先使用4楼的链接下载最新版本的STC-ISP软件,然后在软件“资料下载”菜单里下载最新的USB CDC库文件试试
里面也有相关的例子,可以在例子里进行数据发送,然后开关串口试试,这种操作是不会导致卡在发送函数的




USB CDC库没有提供串口开关状态的判断标志。

happysoul 发表于 2023-7-24 16:52:58

USB_SendData 发送之后要调用
usb_OUT_done();
要不就是一直卡死

jjy163 发表于 2023-8-6 18:04:53

https://www.stcai.com/khs 用最新的库没有这个问题

jjy163 发表于 2023-8-6 18:06:18

https://www.stcai.com/khs 用最新的库没有这个问题
页: [1]
查看完整版本: STC8H8K64U USB-CDC有没有串口接通标志位?