本帖最后由 袁胜富 于 2023-11-13 22:59 编辑
一、概述
CH32X035拥有设备控制器(USBFS),可以使用其为USB_Serial设备,即USB转模拟UART设备,直接使用USB模拟UART,直接省去CH340等USB-to-UART。本例程使用官方例程修改而来。
为了和大家分享,于是乎发表了这篇文章。
二、原理分析

定义环形缓冲队列对象和接收Buff:
RingBufferUSB_RX_RingBuff;
uint8_t USB_RX_Buff[1024];
修改ch32x035_usbfs_device.c
修改voidUSBFS_Device_Endp_Init( void )
修改voidUSBFS_IRQHandler( void )
三、代码

USBSerial.h代码:- /*
- <font _mstmutation="1" _msttexthash="13354253757" _msthash="361">* USBSerial.h
- * * 创建时间:2023年10月14日
- *
- 作者:jeffery。袁
- */
- #ifndef BSP_USBSERIAL_H_
- #define BSP_USBSERIAL_H_
- #include “ch32x035_usbfs_device.h”#include “usb.h”
- typedef struct
- { void (*begin)(void); uint8_t (*read)(void); uint16_t (*available)(void); void (*writebyte)(uint8_t ch);
- void (*writebytes)(uint8_t data[],uint16_t len);
- void (*printf)(char *fmt,...);
- }USBSerial_Typedef;
- 外部USBSerial_Typedef USBSerial;
- void USBSerial_Begin(void);
- uint8_t USBSerial_ReadByte(无效);
- uint16_t USBSerial_Available(无效);
- 空隙USBSerial_WriteByte(uint8_t通道);
- void USBSerial_WriteBytes(uint8_t *data,uint16_t len);
- 无效USBSerial_print(字符 *fmt,...);
- #endif /* BSP_USBSERIAL_H_ */</font>
USBSerial.c代码:
|