发个《基于STM32的USB程序开发笔记》的源码

2019-07-21 01:50发布

    keil那个usb库还不是一般的乱。。其实我资质愚钝。。看了一个多月还是云里雾里,,,,国内关于这个的资料也不多,,我只找到这两个比较容易看得懂的,
    一个是百度文库的,《USB的“JoyStickMouse”例程分析》,地址在名字那里,分析的挺详细,有些纰漏也问题不大,只是没有总结出自己开发usb设备的一个通用的流程。
    另一个就是小新前辈的《基于STM32的USB程序开发笔记》,这个就很详尽了,老板也叫我按这个做。可是我仔细看了看。。。我发现小新前辈用的固件比较老,基本上对不上号了,我在stm32官网也找不到对应的usb固件。。在小新的blog上也找不到源码。。我看很多人也应该找不到,百度了一下。。终于找到地址。。。
    为了方便。我还是上传个给兄弟们参考参考吧~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
29条回答
友韵
2019-07-23 21:53
正点原子 发表于 2011-1-24 11:06
回复【楼主位】rmbass:
-------------------------------
多谢共享.

原子哥,这个程序有个BUG:在usb_regs.h   315行

usb_regs.h

usb_regs.h

我在做HID键盘时,获取PC下发的LED状态时,获取PC的OUT数据 ,只能获取到第一次,因为SETUP过程都能正确完成(HID鼠标也没问题),一直没怀疑宏定义会有错,最后才发现这个宏定义好像不能正常设置非0端点的RX 接收状态。
正确的宏定义为:
#define SetEPR_RXStatus(bEPNum, wStatus)                          
{                                                                 
  unsigned short wRegVal = GetEPR(bEPNum) & EP_RX_DTOG_MASK;      
  if((EP_RX_DTOG1 & wStatus) != 0)                                
    {wRegVal ^= EP_RX_DTOG1;}                                    
  if((EP_RX_DTOG2 & wStatus) != 0)                                
    {wRegVal ^= EP_RX_DTOG2;}                                    
  SetEPR(bEPNum, wRegVal);                                       
}            

一周热门 更多>