(2)、打开CDC_ACM.eww工程之后再IAR里面可以看到整个工程的架构、使用到的文件,如图。可以看到移植USB cdc工程主要就是使用到了USBD类文件、设备文件和驱动文件这几类。GD的官方有吧USB库封装在同一个文件夹内,方便移植。(3)、在工程右键键打开包含文件的文件夹,可以知道具体使用的是
移植GD32官方的USB CDC_ACM例程:GD32F4xx_Firmware_Library_V1.4\GD32F4xx_Firmware_Library_V1.4...
所谓的双USB CDC-ACM,就是使用USB复合设备,一个USB设备上面有几种功能。最典型的应用的就是4G模块。 GD原生并不支持双USB CDC-ACM,不过他们给了一个复合设备的demo,是hid+打印机的,可以在GD32F4xx\\_Firmware\\_Library\Examples\USB\USB\\_Device\composite\\_dev\\_hid\\_printer找到它。然后网上有人基...
450i的CDC程序):,解压进入目录GD32F4xx_Firmware_Library_V1.4\GD32F4xx_Firmware_Library_V1.4\Project\USB\GD32F450i\USB_Device\CDC_ACM\MDK-ARM;2.关键修改的地方如下: a.我用的是keil5.26版本,所以要改成,然后编译之类的问题自行解决,略过。 b.如果硬件用GPIOPA11 ...
void main(){while(1){……if (usb_rx_ch == -1)usb_rx_ch = USBD_CDC_ACM_GetChar();……}} 然后看到这个标志一直在,未清除导致。 但很奇怪的事,该代码在 ST 里面跑的挺好的。不管它,加上处理: void USB_LP_CAN1_RX0_IRQHandler(void) {……if (istr & ISTR_ESOF){if (USBD_P_Error...
usb_rx_ch = USBD_CDC_ACM_GetChar(); …… } } 然后看到这个标志一直在,未清除导致。 但很奇怪的事,该代码在ST里面跑的挺好的。不管它,加上处理: void USB_LP_CAN1_RX0_IRQHandler(void) { …… if (istr & ISTR_ESOF) { if (USBD_P_Error_Event) ...
在使用gd32e103 usbd_cdc_acm(虚拟串口)时,发现调用cdc_acm_data_receive和cdc_acm_data_send时,cdc_acm_data_send经常回复cdc_acm_data_receive接收到的数据,查看了cdc_acm_core.h头文件,可以发现数据结构usb_cdc_handler只有一个数据缓冲区,也就是说接收和发送共用一个数据缓冲区,如果是这样,在发送之前...
3. CDC(Communication Device Class):CDC是USB设备类的一种,它包含抽象控制模型(ACM)子类,用于模拟串行通信接口。通过ACM,USB设备可以表现为一个虚拟的串口,使得用户可以通过标准的串口API与之通信。 4. GD32的USB硬件支持:GD32芯片内置了USB OTG(On-The-Go)控制器,支持全速和高速USB通信,能够方便地实现USB设备...
void main(){while(1){……if (usb_rx_ch == -1)usb_rx_ch = USBD_CDC_ACM_GetChar();……}} 然后看到这个标志一直在,未清除导致。 但很奇怪的事,该代码在 ST 里面跑的挺好的。不管它,加上处理: void USB_LP_CAN1_RX0_IRQHandler(void) {…… ...
另外,该配置描述符中包含了一些类特殊接口描述符,具体请读者参阅CDC类标准协议。 C usb_cdc_desc_config_set cdc_config_desc = { .config = { .header = { .bLength = sizeof(usb_desc_config), .bDescriptorType = USB_DESCTYPE_CONFIG, }, .wTotalLength = USB_CDC_ACM_CONFIG_DESC_SIZE, .b...