找回密码
 立即注册
查看: 1073|回复: 8

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:273
  • 最近打卡:2025-05-02 09:32:45

3

主题

17

回帖

582

积分

高级会员

积分
582
发表于 2023-7-23 12:21:32 | 显示全部楼层 |阅读模式
用USB_SendData这个函数给电脑上传数据时,当电脑串口助手打开对应串口时,上传数据正常,但如果没有打开串口,程序会卡到这个函数这里,一旦电脑串口助手打开串口,程序就正常了,所以想问一下在使用USB-CDC串口时有没有串口接通标志位?不知道能不能让串口接通时使用此函数,没有接通时不使用?
123.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-7-24 09:57:39 | 显示全部楼层
通过判断 “DeviceState” 标志是否等于 “DEVSTATE_CONFIGURED” 来确定接口是否可以正常通信。
在主循环里判断:
  1.     while (1)
  2.     {
  3.         delay_ms(1);
  4.         KeyResetScan();   //长按P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码
  5.         if(DeviceState != DEVSTATE_CONFIGURED)  //等待USB完成配置
  6.             continue;
  7.         if (bUsbOutReady)
  8.         {
  9.             usb_OUT_done();    //接收应答(固定格式)
  10.             
  11.             printf("OutNumber=0x%X\r\n",OutNumber);  //使用 printf 函数打印接收数据长度
  12.             USB_SendData(UsbOutBuffer,OutNumber);    //发送数据缓冲区,长度
  13.         }
  14.     }
复制代码

或者在初始化里判断:
  1. while(DeviceState != DEVSTATE_CONFIGURED);  //等待USB完成配置
复制代码

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:273
  • 最近打卡:2025-05-02 09:32:45

3

主题

17

回帖

582

积分

高级会员

积分
582
发表于 2023-7-24 11:57:26 | 显示全部楼层
USB完成配置,这个有的,要想cdc通信,首先得USB完成配置,我是想问如何判断串口助手有没有打开串口,当打开串口时我这边程序是正常的,当关闭串口时程序会卡到USB_SendData这个函数里,所以我想知道如何判断串口助手有没有打开串口,我是想当串口助手打开串口时(先判断一下上位机串口打开了)再使用USB_SendData这个函数给电脑发数据
串口助手.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-7-24 12:05:29 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:273
  • 最近打卡:2025-05-02 09:32:45

3

主题

17

回帖

582

积分

高级会员

积分
582
发表于 2023-7-24 14:12:09 | 显示全部楼层
神*** 发表于 2023-7-24 12:05
先升级这个
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.91Z.zip
其他再说

好的,这个软件更新的频率有点高
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-7-24 14:35:01 | 显示全部楼层
蓝色*** 发表于 2023-7-24 11:57
USB完成配置,这个有的,要想cdc通信,首先得USB完成配置,我是想问如何判断串口助手有没有打开串口,当打 ...

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


1.png

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:322
  • 最近打卡:2025-04-28 22:28:11

3

主题

24

回帖

1589

积分

金牌会员

积分
1589
发表于 2023-7-24 16:52:58 | 显示全部楼层
USB_SendData 发送之后要调用
usb_OUT_done();
要不就是一直卡死
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-08-21 16:00:36

0

主题

4

回帖

66

积分

注册会员

积分
66
发表于 2023-8-6 18:04:53 | 显示全部楼层
https://www.stcai.com/khs 用最新的库没有这个问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-08-21 16:00:36

0

主题

4

回帖

66

积分

注册会员

积分
66
发表于 2023-8-6 18:06:18 | 显示全部楼层
https://www.stcai.com/khs 用最新的库没有这个问题
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 18:01 , Processed in 0.134409 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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