找回密码
 立即注册
查看: 354|回复: 15

通过CDC口向上位机发数据发现一个问题(20250205)

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-17 20:25:55

6

主题

17

回帖

110

积分

注册会员

积分
110
发表于 2025-2-5 16:37:48 | 显示全部楼层 |阅读模式

截图202502051628483026.jpg

以上代码已经调试通过了
具体过程: 下载程序后, 打开CDC助手, 向CDC助手发送数据, 随后CDC也就收到相应的数据, 没毛病


随后我添加以下语句, 目的是循环向CDC口发送数据, 1s一次
截图202502051619017226.jpg

然后就出现了以下现象:
当关闭CDC口时, P2.1连接的指示灯不闪了;
当打开CDC口时, 程序运行正常;
我感觉是不是单片机向上位机发送数据, 只有有上位机接收了数据, 程序才继续运行, 如果没有上位机接收数据, 程序就不运行了.
这个现象正常吗?
请指教!!!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2025-2-5 17:08:39 | 显示全部楼层
看看USB_SendData里是什么搞 的

点评

封装的, 看不到  发表于 2025-2-5 18:24
回复 支持 反对

使用道具 举报 送花

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

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2025-2-5 19:35:01 | 显示全部楼层
USB_SendData函数调用之后,再调用一下usb_OUT_done()试试

点评

试了 没什么改善  发表于 2025-2-5 21:01
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2025-2-6 08:50:13 | 显示全部楼层
Ayb_*** 发表于 2025-2-5 17:08
看看USB_SendData里是什么搞 的

你没有使能USb,调用USB_SendData可能导致死机,内部可能在判断某些标志,标志始终不能有效
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2025-2-6 09:30:07 | 显示全部楼层
你这种现象不正常
单片机向上位机发送的数据,是由上位机的驱动程序负责处理的
与是否打开CDC串口没关系

下面的附件代码功能,每1秒钟发送一个数据包到上位机
无论CDC串口是否打开,P6口的指示灯都正常闪烁

stc8h_cdc_demo.zip

62.44 KB, 下载次数: 11

点评

亲测 你这个程序也是这样  发表于 2025-2-7 09:02
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-17 20:25:55

6

主题

17

回帖

110

积分

注册会员

积分
110
发表于 2025-2-7 09:08:31 | 显示全部楼层
zh*** 发表于 2025-2-6 09:30
你这种现象不正常
单片机向上位机发送的数据,是由上位机的驱动程序负责处理的
与是否打开CDC串口没关系

截图202502070903125889.jpg

你这个程序我只是做了这一点修改, 应该不影响其它功能吧?
截图202502070906066178.jpg

打开CDC串口后 P2.0口指示灯正常闪烁
关闭CDC串口后 P2.0口指示灯不再闪烁


你的程序, 官方下载软件, 我的电脑, 难道哪里有设置不对的地方?

点评

上午好,已经测试通过了,原因是没有在发送前判断是否发送忙 这个是测试通过的程序: 以下是更改的过的程序片段 while (1) { if (f1ms) { f1ms = 0; if (cnt++ >= 1000) {  详情 回复 发表于 2025-2-17 10:33
闪烁太快 ?肉眼观察不到闪烁,用示波器观察  详情 回复 发表于 2025-2-16 08:41
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-17 20:25:55

6

主题

17

回帖

110

积分

注册会员

积分
110
发表于 2025-2-15 20:46:11 | 显示全部楼层
没办法 我想把这这个帖子顶上来 求版主帮忙
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-2-16 08:41:27 | 显示全部楼层
zsb7*** 发表于 2025-2-7 09:08
你这个程序我只是做了这一点修改, 应该不影响其它功能吧?

闪烁太快 ?肉眼观察不到闪烁 ?
1,用示波器观察;
2,用万用表观察平均值
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-17 20:25:55

6

主题

17

回帖

110

积分

注册会员

积分
110
发表于 2025-2-16 08:56:38 | 显示全部楼层
神*** 发表于 2025-2-16 08:41
闪烁太快 ?肉眼观察不到闪烁 ?
1,用示波器观察;
2,用万用表观察平均值

...
闪烁频率1s, 根本用不到示波器, 肉眼可见
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-2-17 10:33:26 | 显示全部楼层
zsb7*** 发表于 2025-2-7 09:08
你这个程序我只是做了这一点修改, 应该不影响其它功能吧?

上午好,已经测试通过了,原因是没有在发送前判断是否发送忙
这个是测试通过的程序:
stc8h_cdc_demo(增加忙等待).zip (69.65 KB, 下载次数: 7)


以下是更改的过的程序片段

while (1)
{
    if (f1ms)
    {
        f1ms = 0;
        if (cnt++ >= 1000)
        {
            cnt = 0;
            buf[1]++;
            if (buf[1] > '9')
                buf[1] = '0';
            if (bUsbInBusy == 0)
                USB_SendData(buf, 4); // 每1s向上位机发送一个数据包
            P20 = ~P20;               // I/O口闪烁指示
        }
    }
}
bUsbInBusy 的意思是以USB主机看,向主机方向的数据(input)的忙标志位
在发送忙的时候就不要继续发送了,这样会导致发送一直等待,进而导致程序卡在这个地方
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:41 , Processed in 0.137666 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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