usb cdc 代码 框架 分析

自己搞了个USB的CDC类实现串口的功能,正点原子的官方例程里面是没有关于CDC的,后面花了一个星期左右的时间看了一些书和资料,搞了一个CDC类的能在正点原子的407开发板上跑,按理来说4系列都能跑。废话不多说直接上图。

代码框架图

 

      USB相关的文件比较多,我是把整个文件都看了自己总结的,可能做的不是很好看。

       main函数里面就调用了一个USB_init函数去初始化硬件引脚、开启时钟和开启USB中断。以后所有的函数调用都是通过USB中断来调用,usb_cdc_init.c这个文件里面有很多类型的usb中断函数,每个函数对应这一种usb中断类型。常见我们可能会用到的中断比如说有数据读写中断、挂起中断、复位、恢复等。

      函数的整个调用流程如上图所示,就不细说了,可以配合图和源代码去理解源代码下载地址,我们需要关心的文件就只有四个,其他的都是固定了不用修改,第一个是usb_bsp.c,这个文件是硬件相关的函数,既然要用到usb那就要使能相关引脚和开启时钟,如果是用stm32F1系列的芯片可能引脚要改,我还没用过,stm32F4系列的引脚是PA11和PA12.

    第二个文件是usbd_cdc_vcp.c,这里面有两个函数是直接操作用户层收发buffer的,所以若果你想多PC端发过来的数据作什么处理或者要发什么数据给PC可以在里面修改。

第三个文件是usbd_user.c,这个文件里的函数是为了给用户再usb事务触发的时候可以做一些事情,比如说usb复位的时候你想干嘛你就添加相应的代码到这个文件里面的函数,还有断开、数据收发都是可以的。

第四个文件是usbd_desc.c,这个文件是用户window端显示设备驱动的名称、PID、VID等驱动信息,这里的学问也比较多,推荐一本书《usb开发手册》傅志辉写的,里面讲的很详细。

上面的改完了之后就可以实现向串口一样收发数据了,至于得到的数据想做什么处理就是后面的事了。欢迎交流!!!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_38543880

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值