可以呀,我用stc_usb_cdc.hex。
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC 1T Series MCU Demo Programme -------------------------------*/
- /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
- /*---------------------------------------------------------------------*/
- /************* 功能说明 **************
- 本例程基于STC8H8K64U核心转接板(打狗棒)进行编写测试。
- 使用USB线连接核心板USB接口与电脑;
- MCU通过USB CDC(Communication Device Class)协议识别为串口设备;
- 使用串口助手打开CDC虚拟串口,然后向MCU发送数据,MCU返回接收到的数据到串口助手;
- 数据长度限制在64字节以内。
- 如果data空间不够,可将Memory Model设为Large模式,然后使用“stc_usb_cdc_8h_xdata.lib”库函数。
- 下载时, 选择时钟 24MHZ (用户可自行修改频率)。
- ******************************************/
- #include "stc.h"
- #include "usb.h"
- //USB调试及复位所需定义
- char *USER_DEVICEDESC = NULL;
- char *USER_PRODUCTDESC = NULL;
- char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
- void sys_init();
- void main()
- {
- sys_init(); //系统初始化
- usb_init(); //USB CDC 接口配置
- IE2 |= 0x80; //IE2相关的中断位操作使能后,需要重新设置EUSB
- EA = 1;
-
- while (1)
- {
- if(DeviceState != DEVSTATE_CONFIGURED) //等待USB完成配置
- continue;
- if (bUsbOutReady)
- {
- usb_OUT_done(); //接收应答(固定格式)
-
- printf("OutNumber=%bd\r\n",OutNumber); //使用 printf 函数打印接收数据长度
- USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
- }
- }
- }
- void sys_init()
- {
- P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能
- P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
- P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
- P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
- P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
- P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
- P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
- P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
- P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
- //====== USB 初始化 ======
- P3M0 &= ~0x03;
- P3M1 |= 0x03;
-
- IRC48MCR = 0x80;
- while (!(IRC48MCR & 0x01));
-
- USBCLK = 0x00;
- USBCON = 0x90;
- //========================
- }
复制代码
|