#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)

{

case USB_EVT_IN:

usb_ep1_in_process();

//GetInReport();

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

break;

case USB_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 (* 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)

{

case USB_EVT_IN:

usb_ep1_in_process();

//GetInReport();

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

break;

case USB_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)

{

}

lpc1768usb使用-配置的更多相关文章

  1. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  2. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  3. react-router 组件式配置与对象式配置小区别

    1. react-router 对象式配置 和 组件式配置    组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...

  4. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  5. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  6. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

  7. [linux]阿里云主机的免登陆安全SSH配置与思考

    公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...

  8. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  9. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

随机推荐

  1. 修改apache配置文件去除thinkphp url中的index.php

    例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index. ...

  2. Keychain 浅析

    什么是Keychain? 根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌.苹果自己用keychain来保存Wi- ...

  3. MVVM 入门介绍

    转载自:http://www.objccn.io/issue-13-1/ 我于 2011 年在 500px 找到自己的第一份 iOS 开发工作.虽然我已经在大学里做了好几年 iOS 外包开发,但这才是 ...

  4. lucene3.6.1 经典案例 入门教程 (包含从文件中读取content)

    转载http://liqita.iteye.com/blog/1676664 第一步:下载lucene的核心包 lucene-core-3.6.1-javadoc.jar (3.5 MB) lucen ...

  5. POJ 3292 Semi-prime H-numbers (素数筛法变形)

    题意:题目比较容易混淆,要搞清楚一点,这里面所有的定义都是在4×k+1(k>=0)这个封闭的集合而言的,不要跟我们常用的自然数集混淆. 题目要求我们计算 H-semi-primes, H-sem ...

  6. php basename()文件夹 路径 文件后缀名 读取pathinfo()

    $path = "/www/mywebsite/images/myphoto.jpg"; 1.pathinfo()函数 pathinfo()函数返回的是一个包含了文件信息的数组,数 ...

  7. JavaBean--删除操作

    删除命令:removeAttribute(Javabean名称) 前面调用用pageContext,request,session,application, 如request.removeAttrib ...

  8. 老问题:Android子线程中更新UI的3种方法

    在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 方法一:用Handler 1.主线程中定义Handler: Handle ...

  9. HDU 2444 The Accomodation of Students(二分图判定+最大匹配)

    这是一个基础的二分图,题意比较好理解,给出n个人,其中有m对互不了解的人,先让我们判断能不能把这n对分成两部分,这就用到的二分图的判断方法了,二分图是没有由奇数条边构成环的图,这里用bfs染色法就可以 ...

  10. 方便android开发网站:

    可以通过输入包名或者Google Play地址消灾google市场的应用 http://apps.evozi.com/apk-downloader/ 16进制转常用的10进制 http://www.b ...