lpc1768usb使用-配置
#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使用-配置的更多相关文章
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- react-router 组件式配置与对象式配置小区别
1. react-router 对象式配置 和 组件式配置 组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- [linux]阿里云主机的免登陆安全SSH配置与思考
公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
随机推荐
- POJ1734/Floyd求最小环
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6647 Accepted: 2538 ...
- win8.1去掉鼠标右键回收站固定到开始菜单的方法
win8.1去掉鼠标右键“回收站固定到开始菜单” 平台:win8.1 问题: 桌面“回收站”右键菜单里有个“固定到开始屏幕”,一不小心就误按,设法删之. 打开注册表编辑器.在注册表编辑器里面定位到:H ...
- Android中自定义veiw使用Java中的回调方法
//------------------MainActivity----中---------------------------------- import android.os.Bundle;imp ...
- 8633 回文划分(dp)
8633 回文划分 该题有题解 时间限制:1000MS 内存限制:1000K提交次数:169 通过次数:63 题型: 编程题 语言: G++;GCC Description 我们说一个字符串是回 ...
- Cloudsim 3.0在myclipse下的安装过程
(1)下载cloudsim 3.0: http://code.google.com/p/cloudsim/downloads/list (2)下载flanaga.jar包 下载地址:http://w ...
- java 线程安全
要认识java线程安全,必须了解两个主要的点:java的内存模型,java的线程同步机制.特别是内存模型,java的线程同步机制很大程度上都是基于内存模型而设定的. 浅谈java内存模型: 不同的平台 ...
- 动态规划2-----hdu1069
首先这道题目先要理解题目的意思. 用一些方块堆塔,给出的每种方块个数是无限的,只有满足长宽都小于下面一个方块的方块才能摆上去. 首先这道题需要一个转化. 每个方块有3个不同的面,每个面长宽交换,一共每 ...
- RasterBandClass Class
Product Availability Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Description Th ...
- 【转】揭秘JavaScript中谜一样的this
原文:http://www.ituring.com.cn/article/66889 在这篇文章里我想阐明JavaScript中的this,希望对你理解this的工作机制有一些帮助.作为JavaScr ...
- POJ1611 The Suspects 并查集模板题
题目大意:中文题不多说了 题目思路:将每一个可能患病的人纳入同一个集合,然后遍历查找每个点,如果改点点的根节点和0号学生的根节点相同,则该点可能是病人. 模板题并没有思路上的困难,只不过在遍历时需要额 ...