首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STM32 STM32CubeF4 USB操作

STM32 STM32CubeF4 USB操作
EN

Stack Overflow用户
提问于 2015-05-13 23:37:38
回答 2查看 6.7K关注 0票数 5

我为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获得和发送字符的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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,只需在主循环中处理它。

票数 7
EN

Stack Overflow用户

发布于 2015-05-14 00:27:51

这个问题对于这个论坛来说是宽泛的,而不是一个具体问题的实际问题。但是,如一些提示所示,您可能

  • 阅读USB规范,至少是一些基本的概述(从维基百科开始)。USB不能通过在软件中切换GPIO来工作(参见下一点)
  • 阅读STM32F4xx参考手册。这是相当全面的。
  • 阅读演示的源代码。这应该能回答所有的问题。
  • 要跟踪执行路径,您应该记住C总是以main()函数开头,所以这是一个很好的开始,可以查看发生了什么。(免责声明:我很清楚,它从启动开始,但这可能会使初学者更加困惑)。

如果你想和USB一起工作,无论如何你都得这么做,所以你现在也可以从它开始。是的,这将需要一些时间;不足为奇的是,工程师们在开始做更大的项目之前已经学了很多年了。

所有信息都是合法的,在网上是免费的。

而且,是的,USB很可能是中断驱动的,也可能使用DMA传输数据.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30226955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档