EN单片机中Sprint函数: 说明1:使用该函数时 必须包含stdio.h头文件,否则容易卡死程序 说明...
使用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 *...
while (CDC_Transmit_FS(i2cdata, reg_length) != USBD_OK);我这边有个I2C读的程序。读64位,存在64位的数组里,然后用CDC发出去。长度可调;为什么63为以下或以上,都可以正常发送。遇到64就出问题呢?遇到64就会卡住,多读一位,或者再次运行改程序,但是只读一位就会全发出来。 蓝梦妖蝶 默默无闻 1 如上...
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); 23 return (USBD_OK); 24 /* USER CODE END...
CDC_Transmit_FS((uint8_t *)"Hallow Word!\n", strlen("Hellow Word!\n")); HAL_Delay(100); } /* USER CODE END 3 */ 编译后下载,打开串口后能看到串口一直打印Hellow Word! 单CDC串口的发送测试就算是完成了,接收我没有测试,准备在双CDC串口是测试。
copy接收的数据 CDC_Transmit_FS:直接调用,传入对应数据和大小即可 USART_RXIN_IDLE_Recever:该函数位自定义中断函数,但USART接收到一个字符时,传输完成时,进入该函数 HAL_UART_Transmit:直接调用,传入对应数据和大小即可 这些函数具体代码逻辑和执行过程会再写一篇文章...
CDC_Transmit_FS(UserTxBufferFS, UserTxBufPtrIn); UserTxBufPtrIn = 0; } 1. 2. 3. 4. 5. 6. 7. 通过以上设置,即可实现类似CH340等USB转串口芯片的功能。但STM32的USB接口功能更强大,可以实现USB复合设备,比如同时虚拟多个串口。以后有时间再做研究和大家分享。
同样,CDC_Transmit_FS函数也相应修改,用于向特定的CDC设备发送数据。通过上述步骤,我们成功地实现了STM32 USB配置5个CDC设备的目标。在后续的使用中,通过合理的接口设计与配置,可以有效提升设备的通信性能和数据处理能力,为用户提供稳定、高效的串行通信解决方案。
intfputc(intch, FILE *f){while(CDC_Transmit_FS((uint8_t*)&ch,1) == USBD_BUSY);returnch; } 总结 STM32MXCube用户提供了一个很方便使用USB(VCP)功能,只需几个操作就可以在工程里面加上VCP的库。通过这个VCP可以完成我们应用的一部分功能。
首先先用STM32CUBEMX生成CDC工程,并测试通过没有问题后,就可以着手开始下一步的修改,如果你还不了解CDC虚拟串口,那么可以参考文章开头链接第一条说明里的博客内容。 第二步:USB设备描述符的修改 这一步很简单的,就是修改usbd_desc.c中的设备描述符数组USBD_FS_DeviceDesc...