可以呀,我用stc_usb_cdc.hex。
STC8H-CDC.png (322.8 KB, 下載次數: 46)
下載附件
2023-3-15 16:39 上傳
- /*---------------------------------------------------------------------*/
- /* --- 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;
- //========================
- }
復制代碼
|