基于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; //使能中断
- }
复制代码
|