3. 中断冲突问题:检查是否存在中断冲突的情况。如果在接收中断中调用CDC_Transmit_FS函数,可能会与发送...
默认的HAL库函数是只针对一路CDC的情况,所以我们需要修改成多路CDC操作函数,将端口参数传递出来,一共有下面几个函数: USBD_CDC_DataOut:USB接收函数回调,修改提供端口参数 CDC_Receive_FS(uint8_t *Buf, uint32_t *Len):USB CDC接收函数 CDC_Transmit_FS(uint8_t* Buf, uint16_t Len):USB CDC发送函数 ...
使用CDC_Transmit_FS函数发送数据: char str[] = "Hello World!\r\n"; while (1) { CDC_Transmit_FS((uint8_t*)str, strlen(str)); HAL_Delay(2000); } 3.4 接收数据 在usbd_cdc_if.c中,可以实现一个回调函数来处理接收到的数据: static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *...
这一步很简单的,就是修改usbd_desc.c中的设备描述符数组USBD_FS_DeviceDesc,将设备类型改为组合...
看代码,STM32端发送串口数据的函数为:CDC_Transmit_FS,这里不需要设置波特率之类的 #include "main.h" #include "usb_device.h" #include "usbd_cdc_if.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); #define VCP_BUF_MAX_LEN 128 ...
3)基本配置完毕,接下来就是发送和接收的,发送主要调用CDC_Transmit_FS函数: 示例: 很简单吧,由于我们的USB是从端,PC是主端,这里发送最后是写入到一个BUF里,PC会主动过来查询并读取. 继续看接收,接收的我们在CDC_Receive_FS函数加入自己的代码即可 示例: ...
所用函数描述: (1)USB接口CDC发送数据 CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) Buf: 传输的数据指针 Len: 传输数据的长度 (2)USB接口CDC接收数据 CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) Buf: 接收的数据指针,不需处理 Len: 接收数据的长度,需要处理 示例: (1)打开usbd_cdc_if....
所用函数描述: (1)USB接口CDC发送数据 CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) Buf:传输的数据指针 Len:传输数据的长度 (2)USB接口CDC接收数据 CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) Buf:接收的数据指针,不需处理 Len:接收数据的长度,需要处理 示例: (1)打开usbd_cdc_if.c文件...
16 static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) 17 { 18 /* USER CODE BEGIN 6 */ 19 CDC_Transmit_FS(Buf, *Len); 20 21 USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); 22 USBD_CDC_ReceivePacket(&hUsbDeviceFS); ...
5.修改HAL默认USB CDC相关接口函数 现在是多CDC的状况了,但默认的HAL库的函数均只是针对一个CDC的情况,我们需要将端口的参数引出来 USBD_CDC_DataOut:USB接收函数回调,修改提供端口参数 CDC_Receive_FS(uint8_t *Buf, uint32_t *Len):USB CDC接收函数 CDC_Transmit_FS(uint8_t* Buf, uint16_t Len):US...