上次我们在 CH567 的 USB1 上实现了 USB CDC 的功能,这一次尝试在 USB0上实现同样的同能。相比之前的程序,需要修改的位置有:
- \src\sys\CH56X_irq.c 中使用USB0DevIntDeal() 响应 USB 0 的中断
1 2 3 4 | __attribute__( ( interrupt ( "id="XSTR(INT_ID_SATA) ) ) )void SATA_Handler(void) { USB0DevIntDeal( ); } |
2. \src\main\main.c 中打开 USB0 的中断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Interrupt_init( 1<<INT_ID_USB0 ); /* 系统总中断开启 */ USB0DeviceInit(); /* USB0Device Init */ printf("USB0 Device Init!\n"); while(1) { printf("Run\n"); mDelaymS(5000); if (UsbConfig!=0) { memcpy( UsbEp3INBuf, &Msg[0], sizeof( Msg )); R16_UEP3_T_LEN1 = sizeof( Msg ); R8_UEP3_TX_CTRL1 = (R8_UEP3_TX_CTRL1 & ~ MASK_UEP_T_RES) | UEP_T_RES_ACK; while (R8_USB0_MIS_ST&bUMS_SIE_FREE==0) {} } }; |
3. ch56x_usb0dev372.h 中全部 USB1 替换为 USB0
4. ch56x_usb0dev372.c 中全部 USB1 替换为 USB0