×
单片机 > 单片机程序设计 > 详情

STM32开发笔记35:USB FS的枚举方法

发布时间:2020-06-05 发布时间:
|

单片机型号:STM32F401


    FS是Full Speed的意思,指全速USB设备,在电路设计时,通过在DP接1.5K上拉电阻到电源的方法告知主机为全速USB设备,但是在具体使用时,还有问题存在,就是当单片机复位后,主机端虽然还能辨认当前USB设备,但是不能够直接使用,其原因在于USB设备重新启动后,需要完成一个枚举过程,以通知主机。


    枚举的具体电路如下图所示,其原理很简单,系统上电后将DE引脚拉高,待USB初始化完毕后,将DE引脚拉低即可。



    具体的头文件程序代码如下,建立DE引脚类,并在CUSB类中具体声明。


#ifndef USB_H_

#define USB_H_

 

#ifdef __cplusplus

extern "C"{

 

class CUsbDataEnablePin:public CIO_Output

{

public:

CUsbDataEnablePin(void);

};

 

class CUSB

{

public:

uint8_t Buffer[64];

uint32_t Length;

boolean  bFlag; 

CUsbDataEnablePin UsbDataEnablePin;

public:

CUSB(void);

void SendData(uint8_t* pData, uint32_t u32_Size);

void ReceiveData(uint8_t* pData, uint32_t u32_Size);

boolean IsReceivedData(void);

uint8_t CalCheckSum(uint8_t* pData, uint8_t Length);

};

 

void USB_InterruptFunction(uint8_t* pBuffer, uint32_t* pLength);

 

}

#endif

#endif

    CPP文件相关代码如下,实例化DE引脚,指明端口和引脚号,在初始化时,先置高,再拉低。


CUsbDataEnablePin::CUsbDataEnablePin(void):CIO_Output(PORTA, PIN10, high) {}

CUSB::CUSB(void)

{

MX_USB_DEVICE_Init();

this->UsbDataEnablePin.Set_1();

Target.Delayms(10);

this->UsbDataEnablePin.Set_0();

}


关键字:STM32  USB  FS  枚举方法 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic468064.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2