2374672920 发表于 2024-9-26 20:07:17

基于LIB库的USB-CDC转串口函数问题

基于LIB库的USB-CDC转串口函数中添加定时器初始化函数后,数据无法接收,这是什么原因?



#include "stc32g.h"
#include "stc32_stc8_usb.h"
#include "Timer.h"

#define FOSC 24000000UL                           //ISP 下载时需将工作频率设置为 24MHz


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";                  //不停电自动 ISP 下载命令



void main()
{
    WTST = 0;
    CKCON = 0;
    EAXFR = 1;

    Timer0_Init();   //*******************************定时器初始化函数
    Timer2_Init();
   
    P0M0 =0x00;
    P0M1 =0x00;
   
    P3M0 &= ~0x03;                                  //P3.0/P3.1 和 USB 的 D-/D+共用 PIN 脚,
    P3M1 |= 0x03;                                 //需要将 P3.0/P3.1 设置为高阻输入模式
    IRC48MCR = 0x80;                              //使能内部 48M 的 USB 专用 IRC
   
    while (!(IRC48MCR & 0x01));
    USBCLK = 0x00;                                  //设置 USB 时钟源为内部 48M 的 USB 专用 IRC
    USBCON = 0x90;                                  //使能 USB 功能
    usb_init();                                     //调用 USB CDC 初始化库函数
    EUSB = 1;                                       //使能 USB 中断
    EA = 1;
   
    while (DeviceState != DEVSTATE_CONFIGURED);   //等待 USB 完成配置



   
    while (1)
    {

      if (bUsbOutReady)                           //查询模式,当硬件接收完成上位机通过串口助手发送数据后
                                                    //会自动将 bUsbOutReady 置 1
                                                    //接收的数据字节数保存在 OutNumber 变量中
                                                    //接收的数据保存在 UsbOutBuffer 缓冲区
      {
            USB_SendData(UsbOutBuffer,OutNumber);   //使用 USB_SendData 库函数可向上位机发送数据
                                                    //这里的测试代码为将接收数据原样返回
            usb_OUT_done();                         //处理完成接收的数据后
                                                    //调用 usb_OUT_done 准备接收下一笔数据
      }
      
      

      
    }
}定时器初始化函数****************************************************

void Timer0_Init()
{
        AUXR |= 0x80;                        //定时器时钟1T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x00;                                //设置定时初始值
        TH0 = 0x00;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志

    TR0=1;
   
        ET0 = 1;                        //使能定时器0的溢出中断允许位
    EA = 1;                         //使能总中断
}


/*========================================================================
功能描述:定时器2初始化
入口参数:无
返回值:无
========================================================================*/
void Timer2_Init(void)
{
        AUXR |= 0x04;                        //定时器时钟1T模式
        T2L = 0x90;                                //设置定时初始值
        T2H = 0xE8;                                //设置定时初始值
        AUXR |= 0x10;                        //定时器2开始计时
    EA= 1;
    ET2 = 1;                //使能中断
}



2374672920 发表于 2024-9-26 20:08:13

顺便请教一下如何基于LIB的USB-HID收发数据{:4_167:}{:4_167:}{:4_167:}

乘风飞扬 发表于 2024-9-27 10:21:10

请提供完整的项目程序,这样方便分析。
USB-HID数据收发,屠龙刀例程包里面有相关的例子跟说明文档:
“通过USB HID协议进行STC-ISP调试接口显示使用说明”

2374672920 发表于 2024-9-27 22:03:42

已上传完整程序

2374672920 发表于 2024-9-27 22:04:26

乘风飞扬 发表于 2024-9-27 10:21
请提供完整的项目程序,这样方便分析。
USB-HID数据收发,屠龙刀例程包里面有相关的例子跟说明文档:
“通 ...

已上传完整程序{:lol:}
页: [1]
查看完整版本: 基于LIB库的USB-CDC转串口函数问题