您的当前位置:首页stm32Custom_HID例子应用笔记_看完后设备肯定能完成枚举

stm32Custom_HID例子应用笔记_看完后设备肯定能完成枚举

2024-04-24 来源:乌哈旅游
stm32Custom_HID例子应用笔记_看完后设备肯定能完成枚

网上有很多关于STM32的USB的例子,但是当你拿过来的时候,很多都不能用。这个原因,看似很简单,但是对于一个STM32的初学者来说。却不是那么容易看出来的,下面将我这一段时间的调试过程分享给大家。以使大家少走一些弯路。

注意。Stm32的EVAL板和平时大家买到的开发板,以及正常你会用的板子,都有些不同。尤其是关于USB接口和USB接口实现枚举的上拉电阻的部分。EVAL板的usb_disconnect_pin是开漏输出的,当其输出0的时候,能够导通三级管使上拉电阻工作,而当其输出1的时候上拉电阻是输出0的。

好了。直接看最常用的修改的例子吧。

第一步。修改关于USB_DISCONNECT的定义。在。platform_config.h中定义的。

#define USB_DISCONNECT GPIOG

#define USB_DISCONNECT_PIN GPIO_Pin_11 #define

RCC_APB2Periph_GPIOG

这个是关于USB插入后上拉电阻的定义。必须对准。这里,请按你设计板子上的USB上拉电阻所用到的IO口来进行修改。

第二步。在hw_config.h中修改配置上拉电阻的管脚。 /*USB_DISCONNECT used as USB pull-up*/

GPIO_InitStructure.GPIO_Pin=USB_DISCONNECT_PIN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//注意这里必须是PP而不是OD(EVAL是OD)因为硬件图是不同的,需要根据硬件来定义。

GPIO_Init(USB_DISCONNECT,&GPIO_InitStructure);

第三步。在hw_config.h中修改USB_Cable_Config()函数//这

RCC_APB2Periph_GPIO_DISCONNECT

个也是对照硬件的。调试时花了相当长时间

if(NewState!=DISABLE) {

GPIO_SetBits(USB_DISCONNECT,USB_DISCONNECT_PIN); } else {

GPIO_ResetBits(USB_DISCONNECT,USB_DISCONNECT_PIN); }

这里需要注意的是SetBits和ResetBits的位置。EVAL里面是ResetBits在前,而SetBits 在后。这个必须注意,硬件不同,这两个函数的位置也需要不同。

这样的话,USB设备已经基本可以实现枚举成功

下面的例子是我修改过的,肯定能用的一个例子,基于GPIO口的上位电阻。下载地址

因篇幅问题不能全部显示,请点此查看更多更全内容