From ce8fa732f8228377eec97072507139496b3ee637 Mon Sep 17 00:00:00 2001 From: XIVN1987 Date: Thu, 25 May 2023 17:52:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=96=E9=83=A8=E4=BE=9B?= =?UTF-8?q?=E7=94=B5=E6=97=B6=EF=BC=8C=E5=85=88=E6=8E=A5=E6=94=B6=E5=88=B0?= =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E6=95=B0=E6=8D=AE=E3=80=81=E5=90=8E=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E7=94=B5=E8=84=91=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=8E=A5=E6=94=B6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CH32V305/src/USBD/ch32v30x_usbhs_device.c | 11 +++++++---- CH32V305/src/vcom_serial.c | 8 ++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CH32V305/src/USBD/ch32v30x_usbhs_device.c b/CH32V305/src/USBD/ch32v30x_usbhs_device.c index c084401..47d15ca 100644 --- a/CH32V305/src/USBD/ch32v30x_usbhs_device.c +++ b/CH32V305/src/USBD/ch32v30x_usbhs_device.c @@ -53,15 +53,16 @@ void USBHS_RCC_Init(void) { RCC_USBCLK48MConfig(RCC_USBCLK48MCLKSource_USBPHY); - RCC_USBHSPLLCLKConfig(RCC_HSBHSPLLCLKSource_HSE); // USBHS PLL 时钟源:HSE - RCC_USBHSConfig(RCC_USBPLL_Div2); // USBHS PLL 时钟源进入 PLL 前 2 分频 - RCC_USBHSPLLCKREFCLKConfig(RCC_USBHSPLLCKREFCLK_4M); // USBHS PLL 时钟源分频后频率为 4MHz(外接晶振为 8MHz) + RCC_USBHSPLLCLKConfig(RCC_HSBHSPLLCLKSource_HSE); // USBHS PLL 鏃堕挓婧愶細HSE + RCC_USBHSConfig(RCC_USBPLL_Div2); // USBHS PLL 鏃堕挓婧愯繘鍏 PLL 鍓 2 鍒嗛 + RCC_USBHSPLLCKREFCLKConfig(RCC_USBHSPLLCKREFCLK_4M); // USBHS PLL 鏃堕挓婧愬垎棰戝悗棰戠巼涓 4MHz锛堝鎺ユ櫠鎸负 8MHz锛 RCC_USBHSPHYPLLALIVEcmd(ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_USBHS, ENABLE); } +extern volatile VCOM Vcom; /********************************************************************* * @fn USBHS_Device_Endp_Init * @@ -75,7 +76,7 @@ void USBHS_Device_Endp_Init(void) USBHS_UEP2_T_EN | USBHS_UEP3_T_EN | USBHS_UEP3_R_EN; - USBHSD->UEP0_MAX_LEN = USB_MAX_EP0_SZ; // 端点 n 接收数据的最大包长度 + USBHSD->UEP0_MAX_LEN = USB_MAX_EP0_SZ; // 绔偣 n 鎺ユ敹鏁版嵁鐨勬渶澶у寘闀垮害 USBHSD->UEP1_MAX_LEN = HID_INT_OUT_SZ_HS; USBHSD->UEP3_MAX_LEN = CDC_BULK_OUT_SZ_HS; @@ -101,6 +102,8 @@ void USBHS_Device_Endp_Init(void) USBHSD->UEP3_TX_LEN = 0; USBHSD->UEP3_TX_CTRL = USBHS_UEP_T_RES_NAK; USBHSD->UEP3_RX_CTRL = USBHS_UEP_R_RES_ACK; + + Vcom.in_ready = 1; } diff --git a/CH32V305/src/vcom_serial.c b/CH32V305/src/vcom_serial.c index 0dbc6e0..efd3f8f 100644 --- a/CH32V305/src/vcom_serial.c +++ b/CH32V305/src/vcom_serial.c @@ -7,7 +7,7 @@ #include "vcom_serial.h" -volatile VCOM Vcom = {.in_ready = 1}; +volatile VCOM Vcom; VCOM_LINE_CODING LineCfg = {115200, 0, 0, 8}; // Baud rate, stop bits, parity bits, data bits @@ -133,9 +133,9 @@ void USART2_IRQHandler(void) void VCOM_TransferData(void) { - if(Vcom.in_ready) // 可以向主机发送数据 + if(Vcom.in_ready) // 鍙互鍚戜富鏈哄彂閫佹暟鎹 { - if(Vcom.rx_bytes) // 有新的数据可以发送 + if(Vcom.rx_bytes) // 鏈夋柊鐨勬暟鎹彲浠ュ彂閫 { Vcom.in_bytes = Vcom.rx_bytes; if(Vcom.in_bytes > CDC_BULK_IN_SZ_HS) @@ -172,7 +172,7 @@ void VCOM_TransferData(void) } } - /* 从主机接收到数据,且 tx_buff 能够装下它们 */ + /* 浠庝富鏈烘帴鏀跺埌鏁版嵁锛屼笖 tx_buff 鑳藉瑁呬笅瀹冧滑 */ if(Vcom.out_ready && (Vcom.out_bytes <= TX_BUFF_SIZE - Vcom.tx_bytes)) { for(int i = 0; i < Vcom.out_bytes; i++)