STM32 STM32CubeF4 USB CDC操作

Ric*_*ard 5 c embedded usb cdc stm32

我为STM32CubeF4构建了用于USB CDC示例的代码.我在usbd_cdc_if.c中添加了缺少的CDC_Receive_FS()接收代码.我将它加载到我的STM32F4 Discovery中,它可以工作.在Tera Term上键入的字符将返回并显示在Tera Term上.

我希望有人能够给我一些关于USB CDC固件如何工作的知识,具体来说,这是由USB -D和+ D引脚电压电平转换时产生的中断驱动的,或者是否有一个在某处启动的无限while循环,它只是轮询等待一些数据出现?提示我的问题的是,我看到可以通过在main.c中的无限循环内切换GPIO引脚的状态来使该板上的LED闪烁.但是,在main.c中,这个while循环中没有任何东西用于USB.那么这个USB CDC固件如何从/向Tera Term获取和发送角色.

小智 6

我会花2分钟回答你而不是教你.接收是通过中断完成的.非常非常简单,硬件看到D +/D-上的电压变化,并根据初始化函数标记中断.中断调用HAL_PCD_IRQHandler,它调用usbd_conf.c文件中的USBD_LL_DataInStage.最终调用usbd_cdc.c文件中的函数USBD_CDC_DataIn.有你的出发点,但并不简单.要做你想做的事,你可能必须停止输出到UART并在主循环中处理它.