kingmacth
发表于 2023-6-9 15:37:29
电子DIY小家 发表于 2023-6-9 10:15
cdc串口发数据之前可以判断一下当前的usb状态,等他空闲了再发,实测这样一点问题没有,贼好用。
谢谢。这个方法确实可以。官方对lib库也不出一个说明。
电子DIY小家
发表于 2023-6-10 13:48:41
kingmacth 发表于 2023-6-9 15:37
谢谢。这个方法确实可以。官方对lib库也不出一个说明。
估计官方觉得这个太简单了吧~ 不过确实这个看一眼usb.h文件,按照stc的风格的话,有接受完成的标志位的话,必然也有发送完成的标志的,找到那个变量名就好了。
dongchengya
发表于 2024-3-7 11:28:03
遇到了同样的问题,
在freeRTOS中 ,的usb_cdc.c中,
1、只能在接收到上位机的数据后才能通过USB发送数据到上位机,
2、或者在上位机串口工具打开串口连接后,才能通过USB发送数据到上位机,一旦关闭上位机的串口工具,STC32G12K128 就会停止运行,我有另外的独立线程控制的板子上的一个LED灯
表现为,打开串口工具并打开串口连接,这个灯就能正常闪烁,但是关闭上位机的串口连接,这个灯就不闪烁了,这是不正常的
请问大佬 ,这是何故?何解?{:4_165:}{:4_165:}{:4_165:}
while(1)
{
EUSB = 1;
if(DeviceState != DEVSTATE_CONFIGURED)//等待USB完成配置
continue;
if (bUsbOutReady)
{
usb_OUT_done(); //接收应答(固定格式)
printf("OutNumber=0x%X\r\n",OutNumber);//使用 printf 函数打印接收数据长度
USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度
}
vTaskDelay(1);
}
vTaskDelete(NULL);
}
神农鼎
发表于 2024-3-7 11:52:02
深圳国芯人工智能有限公司-系统软件 (stcai.com)
gentleman
发表于 2024-3-7 14:58:06
本帖最后由 gentleman 于 2024-3-7 14:59 编辑
dongchengya 发表于 2024-3-7 11:28
遇到了同样的问题,
在freeRTOS中 ,的usb_cdc.c中,
写了个闪灯任务
与USB任务 互不影响
STC-ISP 中开关串口发送数据, 闪灯任务依旧运行
你下载到试验箱测试一下
dongchengya
发表于 2024-3-7 20:32:37
明天试一下
dongchengya
发表于 2024-3-7 20:33:56
我是把Freertos函数版本和Freertos-cdc整合在一起做成一个工程
dongchengya
发表于 2024-3-7 20:40:02
我想把Freertos库函数版本里的stc-usb-cdc-32g.lib换成后来独立发布的更新的stc-usb-cdc-32.lib但是会报错无法编译,后来发布的这个usb-cdc库文件的命名中少了一个字母g,这两个相同功能的usb--cdc库文件 居然不能通用,不兼容一样,何故?何解?
dongchengya
发表于 2024-3-7 20:45:59
while(1)
{
EUSB = 1;
if(DeviceState != DEVSTATE_CONFIGURED)//等待USB完成配置
continue;
if (bUsbOutReady)
{
usb_OUT_done(); //接收应答(固定格式)
printf("OutNumber=0x%X\r\n",OutNumber);//使用 printf 函数打印接收数据长度
USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度
}
printf("问题就在这一行,增加这一行就无法正常运行");
vTaskDelay(1);
}
vTaskDelete(NULL);
}
dongchengya
发表于 2024-3-7 20:48:04
简单一点来说,就是:在官方代码里,增加下面的这一行就,不能正常输出这一串字符,
printf("问题就在这一行,增加这一行就无法正常运行");