电子DIY小家 发表于 2023-3-27 09:16:42

baigezy 发表于 2023-3-27 00:13
用void USB_SendData(BYTE *dat, int size)函数发送也是一样的结果

完整代码打包个发上来看看

乘风飞扬 发表于 2023-3-27 10:35:11

本帖最后由 乘风飞扬 于 2023-3-27 10:40 编辑

baigezy 发表于 2023-3-27 00:08
void Timer0_Isr(void) interrupt 1
{
    if( ++j >= 1000)

你期望是1秒钟发送一次,可是实际的代码在j 大于等于1000后每次都会执行printf指令,直到 j 溢出再次从 0 开始计数:
如果想达到1秒钟发送一次的效果,在执行 if 条件语句里面加一条清除 j 的指令。
void Timer0_Isr(void) interrupt 1
{
    if( ++j >= 1000)
    {
         j = 0;   //清除 j 重新计数
         printf("测试!!!\r\n");
    }      
               
}

baigezy 发表于 2023-3-27 11:43:04

加了的,忘了复制上来,我怀疑芯片有问题,一样的代码屠龙刀上跑没问题,开天斧就不行,我怀疑是焊接排针的时候静电导致芯片部分损坏了,又买了一块开天斧回来测试。

梁工 发表于 2023-3-27 12:09:39

初始化后延时2秒再主动发出数据,或者查询USB初始化是否完成,完成后再发送。
        EA = 1;
        uart_init();
        usb_init();
//        delay_ms(1500);
        while(DeviceState != DEVSTATE_CONFIGURED)        {        NOP(3);        }

baigezy 发表于 2023-3-31 13:16:47

新到的开天斧一切正常,说明之前的那块确实有问题,但是很据迷惑性,其他端口一切正常,就是加载USB-CDC库后,发送数据有问题,接收都没事。有遇到相同问题的朋友可以参考一下。
页: 1 [2]
查看完整版本: USB-CDC虚拟串口不能主动向上位机发送数据吗?