hal库 usb_cdc 通信程序实例 当使用STM32F7xx的HAL库进行USB通信时,需要调用多个库文件和函数。以CDC虚拟串口为例,你可以参考以下步骤: 1. 打开STM32CubeMX软件,新建USB实验工程。 2. 在工程中,选择STM32F407VET6芯片作为MCU,并使用25MHz外部时钟源。 3. 配置USB通信引脚与MCU引脚的对应关系,例如DM(D-)...
首先说一下STM32的USB库的初始化操作,MX_USB_DEVICE_Init函数中使用USBD_RegisterClass函数注册绑定了实际的端口初始化控制等操作,如果是CDC那么注册的就是USBD_CDC这个结构,如果是MSC那么就是注册的USB_MSC这个结构,所以我们的组合设备思路就是用哪个的时候,就将这个结构切换成对应的操作结构。 第一步:基础工程生成...
默认的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发送函数 ...
1、使用CDC_Receive_FS()能够正常接收数据,单独采用CDC_Transmit_FS()定时发送任意长度数据也正常,...
1 接下来测试下虚拟串口的发送功能,需要用到位于usbd_cdc_if.c的CDC_Transmit_FS函数,为此需要将usbd_cdc_if.h包含到调用该函数的c文件中。2 发送函数CDC_Transmit_FS有两个参数,第一个是要发送的数据指针,第二个是需要发送的数据个数(以字节位单位),由于没有其他程序,这里使用HAL_Delay阻塞延时。HAL...
打开usbd_cdc_if.c文件,找到CDC_Receive_FS和CDC_Transmit_FS这两个函数,它们就是应用层实现收、发的函数。 先看发送函数,这个函数可以直接被用户使用: 简单地调用这个函数,只要输入发送数据的首地址、长度,就能把数据从usb虚拟串口发送出去了。 这里为了更方便地使用,我们添加以下重定向代码: ...
isr进行替代,如下:// HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);usbd_isr(&cdc_acm);...
找到usb_cdc_if.c文件,在文件开始处添加接收USB转串口数据的buff(uint_8 usbRxBuff[1000])和接收数据长度(int usbRxLen=0);然后添加下图中框出来的代码即可 3.编译程序烧录验证 用串口助手看可以看到已经可以识别出来了,发送数据下去也可以准确接收并且返回,结果如下图示 ...
这里简单的将接收到的数据原样返回,实现数据回环,只需要在CDC_Receive_FS函数添加一行:static int8_t...
HID默认用中断传输,每一次主机过来轮询最快也要1ms.现在正在专注基于CDC这块例程来修改,暂时按这个帖子...