当前位置:首页 > 单片机 > 单片机
[导读]#ifndef __USBCFG_H__#define __USBCFG_H__//#define USB_IF_NUM 1#define USB_MAX_PACKET0 64#define USB_DMA_EP 0x00000000//尽量不要是能太多时间//这里每一个事件都代表着一个回调函数,使能了该事件就需要实现相

#ifndef __USBCFG_H__

#define __USBCFG_H__

//#define USB_IF_NUM 1

#define USB_MAX_PACKET0 64

#define USB_DMA_EP 0x00000000

//尽量不要是能太多时间

//这里每一个事件都代表着一个回调函数,使能了该事件就需要实现相应的回调函数

#define USB_EP_EVENT 0x0003 //哪些端点需要实现中断处理函数,一位代表一个端点

#define USB_CONFIGURE_EVENT 1 //usb配置事件

#define USB_HID_IF_NUM 0 //usb hid使用端点 第几个接口

#define USB_DEBUG 0

#if USB_DEBUG

#define usb_debug_printf(format,args...) printf(format,##args) //变参宏定义

#else

#define usb_debug_printf(x,...) while(0);

#endif

#endif

#ifndef __USBUSER_H__

#define __USBUSER_H__

#include "usbhw.h"

//hid报告长度

#define HID_REPORT_NUM 1

//hid中断端点地址

#define HID_EP_IN 0x81

#define HID_EP_OUT 0X01

/* USB回调方法 */

extern void USB_Power_Event(BOOL power);

extern void USB_Reset_Event(void);

extern void USB_Suspend_Event(void);

extern void USB_Resume_Event(void);

extern void USB_WakeUp_Event(void);

extern void USB_SOF_Event(void);

extern void USB_Error_Event(U32 error);

/* usb端点终端回调函数类型定义 */

#define USB_EVT_SETUP 1 /* setup包 */

#define USB_EVT_OUT 2 /* OUT 包 */

#define USB_EVT_IN 3 /* IN 包 */

#define USB_EVT_OUT_NAK 4 /* NACK OUT 包 */

#define USB_EVT_IN_NAK 5 /* NACK IN 包 */

#define USB_EVT_OUT_STALL 6 /* 忽略 out包 */

#define USB_EVT_IN_STALL 7 /* 忽略 in包 */

/* USB端点事件回调期(方法数组) */

extern void(*const USB_P_EP[16])(U32 event);

/* USB端点回调方法 */

extern void USB_EndPoint0(U32 event);//最重要的函数,处理USB枚举相关事件

extern void USB_EndPoint1(U32 event);

extern void USB_EndPoint2(U32 event);

extern void USB_EndPoint3(U32 event);

extern void USB_EndPoint4(U32 event);

extern void USB_EndPoint5(U32 event);

extern void USB_EndPoint6(U32 event);

extern void USB_EndPoint7(U32 event);

extern void USB_EndPoint8(U32 event);

extern void USB_EndPoint9(U32 event);

extern void USB_EndPoint10(U32 event);

extern void USB_EndPoint11(U32 event);

extern void USB_EndPoint12(U32 event);

extern void USB_EndPoint13(U32 event);

extern void USB_EndPoint14(U32 event);

extern void USB_EndPoint15(U32 event);

/* USB枚举过程内核调用事件 */

extern void USB_Configure_Event(void);

extern void USB_Interface_Event(void);

extern void USB_Feature_Event(void);

#endif

#include "usbuser.h"

#include "usbep1.h"

/*

* USB Set Configuration Event Callback

* Called automatically on USB Set Configuration Request

*/

#if USB_CONFIGURE_EVENT

void USB_Configure_Event(void)

{

u8 Buf[4]={0,0,0,0};

if(USB_Configuration)

{/* Check if USB is configured */

USB_WriteEP(HID_EP_IN,Buf,sizeof(Buf));

}

}

#endif

//宏展开为USB_EndPointx()类型的函数

#define P_EP(n) ((USB_EP_EVENT & (1 << (n))) ? USB_EndPoint##n : NULL)

/* USB端点中断处理的回调函数 */

void(*const USB_P_EP[16])(U32 event)=

{ P_EP(0),//使用宏

P_EP(1),

P_EP(2),

P_EP(3),

P_EP(4),

P_EP(5),

P_EP(6),

P_EP(7),

P_EP(8),

P_EP(9),

P_EP(10),

P_EP(11),

P_EP(12),

P_EP(13),

P_EP(14),

P_EP(15),

};

//端点1中断的回调函数

void USB_EndPoint1(U32 event)

{

switch(event)

{

caseUSB_EVT_IN:

usb_ep1_in_process();

//GetInReport();

//USB_WriteEP(HID_EP_IN, &InReport, sizeof(InReport));

break;

caseUSB_EVT_OUT:

usb_ep1_out_process();

break;

}

}

void USB_EndPoint2(U32 event)

{

}

void USB_EndPoint3(U32 event)

{

}

void USB_EndPoint4(U32 event)

{

}

void USB_EndPoint5(U32 event)

{

}

void USB_EndPoint6(U32 event)

{

}

void USB_EndPoint7(U32 event)

{

}

void USB_EndPoint8(U32 event)

{

}

void USB_EndPoint9(U32 event)

{

}

void USB_EndPoint10(U32 event)

{

}

void USB_EndPoint11(U32 event)

{

}

void USB_EndPoint12(U32 event)

{

}

void USB_EndPoint13(U32 event)

{

}

void USB_EndPoint14(U32 event)

{

}

void USB_EndPoint15(U32 event)

{

}

#ifndef __USBCFG_H__

#define __USBCFG_H__

//#define USB_IF_NUM 1

#define USB_MAX_PACKET0 64

#define USB_DMA_EP 0x00000000

//尽量不要是能太多时间

//这里每一个事件都代表着一个回调函数,使能了该事件就需要实现相应的回调函数

#define USB_EP_EVENT 0x0003 //哪些端点需要实现中断处理函数,一位代表一个端点

#define USB_CONFIGURE_EVENT 1 //usb配置事件

#define USB_HID_IF_NUM 0 //usb hid使用端点 第几个接口

#define USB_DEBUG 0

#if USB_DEBUG

#define usb_debug_printf(format,args...) printf(format,##args) //变参宏定义

#else

#define usb_debug_printf(x,...) while(0);

#endif

#endif

#ifndef __USBUSER_H__

#define __USBUSER_H__

#include "usbhw.h"

//hid报告长度

#define HID_REPORT_NUM 1

//hid中断端点地址

#define HID_EP_IN 0x81

#define HID_EP_OUT 0X01

/* USB回调方法 */

extern void USB_Power_Event(BOOL power);

extern void USB_Reset_Event(void);

extern void USB_Suspend_Event(void);

extern void USB_Resume_Event(void);

extern void USB_WakeUp_Event(void);

extern void USB_SOF_Event(void);

extern void USB_Error_Event(U32 error);

/* usb端点终端回调函数类型定义 */

#define USB_EVT_SETUP 1 /* setup包 */

#define USB_EVT_OUT 2 /* OUT 包 */

#define USB_EVT_IN 3 /* IN 包 */

#define USB_EVT_OUT_NAK 4 /* NACK OUT 包 */

#define USB_EVT_IN_NAK 5 /* NACK IN 包 */

#define USB_EVT_OUT_STALL 6 /* 忽略 out包 */

#define USB_EVT_IN_STALL 7 /* 忽略 in包 */

/* USB端点事件回调期(方法数组) */

extern void(*const USB_P_EP[16])(U32 event);

/* USB端点回调方法 */

extern void USB_EndPoint0(U32 event);//最重要的函数,处理USB枚举相关事件

extern void USB_EndPoint1(U32 event);

extern void USB_EndPoint2(U32 event);

extern void USB_EndPoint3(U32 event);

extern void USB_EndPoint4(U32 event);

extern void USB_EndPoint5(U32 event);

extern void USB_EndPoint6(U32 event);

extern void USB_EndPoint7(U32 event);

extern void USB_EndPoint8(U32 event);

extern void USB_EndPoint9(U32 event);

extern void USB_EndPoint10(U32 event);

extern void USB_EndPoint11(U32 event);

extern void USB_EndPoint12(U32 event);

extern void USB_EndPoint13(U32 event);

extern void USB_EndPoint14(U32 event);

extern void USB_EndPoint15(U32 event);

/* USB枚举过程内核调用事件 */

extern void USB_Configure_Event(void);

extern void USB_Interface_Event(void);

extern void USB_Feature_Event(void);

#endif

#include "usbuser.h"

#include "usbep1.h"

/*

* USB Set Configuration Event Callback

* Called automatically on USB Set Configuration Request

*/

#if USB_CONFIGURE_EVENT

void USB_Configure_Event(void)

{

u8 Buf[4]={0,0,0,0};

if(USB_Configuration)

{/* Check if USB is configured */

USB_WriteEP(HID_EP_IN,Buf,sizeof(Buf));

}

}

#endif

//宏展开为USB_EndPointx()类型的函数

#define P_EP(n) ((USB_EP_EVENT & (1 << (n))) ? USB_EndPoint##n : NULL)

/* USB端点中断处理的回调函数 */

void (* co

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

交换机是计算机网络中的核心设备之一,用于连接多台计算机并在它们之间传输数据。交换机的性能和功能配置直接影响网络的性能和可用性。其中,交换机的端口是至关重要的组成部分,它们负责接收、转发和管理网络数据。本文将深入探讨交换机...

关键字: 交换机 计算机 配置

要说当下暑期档最火的电影是哪一部,如果随机问一百个路人的话,或许九十九个会首选《我不是药神》。诚然,无大牌明星,无豪华特效,仅仅凭借出色的题材剧情,上映仅8天,票房就已突破20亿!纵观整部电影,除了诸多让人潸然泪下的感人...

关键字: 传祺GS4 荣威RX3 配置

10月21日,行程逾4000公里的“海马S5 IN迹之旅”在束河古镇圆满画上句号。不过,对于即将上市的2018款海马S5来说,这只是一个新的开始。经过了高原、山地、冰雪、荒漠、戈壁、草甸、泥泞等复杂路况验证的海马S5,接...

关键字: 海马S5 配置 动力

全车标配超越传统豪华SUV级别的安全配置,将全系安全标准提高到一个全新的高度。全系标配自适应巡航(ACC),在0-150Km/h速度范围内能够识别有效车距;高强度扭转和弯曲刚度车架,能支持强劲的越野性能和整车刚性,并带来...

关键字: SUV 自适应巡航 配置

在城市里谋生,汽车早已是年轻人生活中不可或缺的一部分,有调查显示80%的90后会选择先买车再买房。因为有了车之后,生活质量、工作效率明显可以得到改善,可以节省出很多时间去提升自己、去享受生活。

关键字: 绅宝X35 北汽 配置

随着消费者需求的提升,现有的微客从外型、配置、价格都已不能让经常在外奔波的小生意人中意,随着价格不断的下探,商用MPV车型凭颜值高、配置更优更舒适、价格与微客相近但档次更高而备受到小生意人的热捧,众多媒体更是直言未来的五...

关键字: 消费者 MPV 配置

万物美好,你在中央。馥郁的百花园中,沁人心脾的芬芳令人迷醉,驾驶着比亚迪元飞驰在这如画的风景中,春天的阳光温暖而充满活力,唤醒内心的激情,如果时间允许的话,真想一直这样开下去。

关键字: 比亚迪 小型SUV 配置

摘要:模块化UPS电源是重要的电气设备,为高效发挥其功能,从模块化UPS电源设备的主要组成部分—主机柜、强电柜、蓄电池、电池开关柜、电池架、连接线缆等方面,分析了合理配置模块化UPS电源的方法,为我国碳达峰和碳中和目标的...

关键字: 电池 线缆 配置

如何设置虚拟主机_虚拟主机的配置步骤

关键字: 主机 配置

请问solidworks对电脑配置有哪些要求?

关键字: solidworks 配置 学习
关闭
关闭