我为USB示例从STM32CubeF4构建了代码。我在CDC_Receive_FS()的usbd_cdc_if.c中添加了缺少的接收代码。我把它加载到我的STM32F4发现中,它就能工作了。在Tera术语上键入的字符返回并显示在Tera项上。
我希望这里的人能给我一些关于USB固件工作原理的知识,具体来说,这是由一个中断驱动的,当USB -D和+D引脚上发生电平移位时,还是有一个无限时间循环被启动,而它只是在等待一些数据的出现?促使我提出问题的是,通过在main.c中的无限时间循环中切换GPIO引脚的状态,可以在这个板上闪烁LED。但是,对于USB来说,在main.c中,这个while循环中没有任何东西。那么,这个USB固件是如何从Tera获得和发送字符的呢?
发布于 2015-05-15 23:37:32
我用2分钟来回答你,而不是教训你。接收是通过中断完成的。非常非常简单,硬件可以看到D+/D上的电压变化,并根据不对称函数标记一个中断。中断调用HAL_PCD_IRQHandler,后者在usbd_conf.c文件中调用USBD_LL_DataInStage。这最终会调用usbd_cdc.c文件中的函数usbd_cdc.c。这是你的出发点,但并不简单。要做您想做的事情,您可能必须停止输出到UART,只需在主循环中处理它。
发布于 2015-05-14 00:27:51
这个问题对于这个论坛来说是宽泛的,而不是一个具体问题的实际问题。但是,如一些提示所示,您可能
如果你想和USB一起工作,无论如何你都得这么做,所以你现在也可以从它开始。是的,这将需要一些时间;不足为奇的是,工程师们在开始做更大的项目之前已经学了很多年了。
所有信息都是合法的,在网上是免费的。
而且,是的,USB很可能是中断驱动的,也可能使用DMA传输数据.
https://stackoverflow.com/questions/30226955
复制相似问题