📄 typedefint.h
字号:
#define USE_USB_BUS_SENSE_IO
//-------------------------------USB端点定义
#define _EP01_OUT 0x01
#define _EP01_IN 0x81
#define _EP02_OUT 0x02
#define _EP02_IN 0x82
#define _EP03_OUT 0x03
#define _EP03_IN 0x83
#define _EP04_OUT 0x04
#define _EP04_IN 0x84
#define _EP05_OUT 0x05
#define _EP05_IN 0x85
#define _EP06_OUT 0x06
#define _EP06_IN 0x86
#define _EP07_OUT 0x07
#define _EP07_IN 0x87
#define _EP08_OUT 0x08
#define _EP08_IN 0x88
#define _EP09_OUT 0x09
#define _EP09_IN 0x89
#define _EP10_OUT 0x0A
#define _EP10_IN 0x8A
#define _EP11_OUT 0x0B
#define _EP11_IN 0x8B
#define _EP12_OUT 0x0C
#define _EP12_IN 0x8C
#define _EP13_OUT 0x0D
#define _EP13_IN 0x8D
#define _EP14_OUT 0x0E
#define _EP14_IN 0x8E
#define _EP15_OUT 0x0F
#define _EP15_IN 0x8F
//-------------------------------USB各种标准请求类型
#define GET_STATUS 0 // 主机请求一个设备、接口或端点的特性状态
#define CLR_FEATURE 1 // 主机请求禁止一个设备、接口或端点上的特征
#define SET_FEATURE 3 // 主机请求启用一个在设备、接口或端点上的特征
#define SET_ADR 5 // 主机指定一个地址来与设备通信
#define GET_DSC 6 // 主机请求一个指定的描述符
#define SET_DSC 7 // 主机新增一个描述符,或是更新一个存在的描述符
#define GET_CFG 8 // 主机请求目前设备配置的数值
#define SET_CFG 9 // 指示设备使用选择的配置
#define GET_INTF 10 // 如果设备支持的配置支持多个互不相关设置的端口,主机请求目前的设置
#define SET_INTF 11 // 如果设备支持多个互不相关设置的接口,主机请求设备使用一个指定的设置
#define SYNCH_FRAME 12 // 设备与报告一个端点的同步帧
#define DEVICE_REMOTE_WAKEUP 0x01 // 设备远程唤醒
#define ENDPOINT_HALT 0x00 // 端点挂起
/* Endpoint Transfer Type */
#define _CTRL 0x00 //Control Transfer
#define _ISO 0x01 //Isochronous Transfer
#define _BULK 0x02 //Bulk Transfer
#define _INT 0x03 //Interrupt Transfer
/* Descriptor Types */
#define DSC_DEV 0x01
#define DSC_CFG 0x02
#define DSC_STR 0x03
#define DSC_INTF 0x04
#define DSC_EP 0x05
/* Configuration Attributes */
#define _DEFAULT 0x01<<7 //Default Value (Bit 7 is set)
#define _SELF 0x01<<6 //Self-powered (Supports if set)
#define _RWU 0x01<<5 //Remote Wakeup (Supports if set)
//-------------------------------USB类型定义
/*
MUID = Microchip USB Class ID
用来指明usb的那个类型获得EP0数据的流通
*/
#define MUID_NULL 0 //无
#define MUID_USB9 1 //USB控制传输
#define MUID_HID 2 //HID
#define MUID_CDC 3 //海量传输
//------------------------------- 端点状态定义
#define OUT 0
#define IN 1
#define PIC_EP_NUM_MASK 0b01111000
#define PIC_EP_DIR_MASK 0b00000100
#define EP00_OUT ((0x00<<3)|(OUT<<2))
#define EP00_IN ((0x00<<3)|(IN<<2))
#define EP01_OUT ((0x01<<3)|(OUT<<2))
#define EP01_IN ((0x01<<3)|(IN<<2))
#define EP02_OUT ((0x02<<3)|(OUT<<2))
#define EP02_IN ((0x02<<3)|(IN<<2))
#define EP03_OUT ((0x03<<3)|(OUT<<2))
#define EP03_IN ((0x03<<3)|(IN<<2))
#define EP04_OUT ((0x04<<3)|(OUT<<2))
#define EP04_IN ((0x04<<3)|(IN<<2))
#define EP05_OUT ((0x05<<3)|(OUT<<2))
#define EP05_IN ((0x05<<3)|(IN<<2))
#define EP06_OUT ((0x06<<3)|(OUT<<2))
#define EP06_IN ((0x06<<3)|(IN<<2))
#define EP07_OUT ((0x07<<3)|(OUT<<2))
#define EP07_IN ((0x07<<3)|(IN<<2))
#define EP08_OUT ((0x08<<3)|(OUT<<2))
#define EP08_IN ((0x08<<3)|(IN<<2))
#define EP09_OUT ((0x09<<3)|(OUT<<2))
#define EP09_IN ((0x09<<3)|(IN<<2))
#define EP10_OUT ((0x0A<<3)|(OUT<<2))
#define EP10_IN ((0x0A<<3)|(IN<<2))
#define EP11_OUT ((0x0B<<3)|(OUT<<2))
#define EP11_IN ((0x0B<<3)|(IN<<2))
#define EP12_OUT ((0x0C<<3)|(OUT<<2))
#define EP12_IN ((0x0C<<3)|(IN<<2))
#define EP13_OUT ((0x0D<<3)|(OUT<<2))
#define EP13_IN ((0x0D<<3)|(IN<<2))
#define EP14_OUT ((0x0E<<3)|(OUT<<2))
#define EP14_IN ((0x0E<<3)|(IN<<2))
#define EP15_OUT ((0x0F<<3)|(OUT<<2))
#define EP15_IN ((0x0F<<3)|(IN<<2))
//-------------------------------缓冲期描述符状态定义
/* Buffer Descriptor Status Register Initialization Parameters */
#define _BSTALL 0x04 //缓冲器停止始能
#define _DTSEN 0x08 //数据套索同步使能
#define _INCDIS 0x10 //地址递增禁止
#define _KEN 0x20 //保持保存所有权使能
#define _DAT0 0x00 //包期待下一个
#define _DAT1 0x40 //包期待下一个
#define _DTSMASK 0x40 //如果DTSEN没有使能,保持置1
#define _USIE 0x80 //SIE拥有缓冲区
#define _UCPU 0x00 //CPU拥有缓冲区
//-------------------------------控制传输常量定义
/* Control Transfer States */
// 控制传输状态定义
#define WAIT_SETUP 0 // 等待状态
#define CTRL_TRF_TX 1 // 控制传输发送数据状态
#define CTRL_TRF_RX 2 // 控制传输接收数据状态
/* USB PID: Token Types - See chapter 8 in the USB specification */
//PID 令牌
#define SETUP_TOKEN 0b00001101 // 主机到设备的控制管道设置事务
#define OUT_TOKEN 0b00000001 // 主机到设备的数据事务
#define IN_TOKEN 0b00001001 // 设备到主机的数据事务
/* bmRequestType Definitions */
#define HOST_TO_DEV 0 //主机到设备(数据方向)
#define DEV_TO_HOST 1 //设备到主机 (数据方向)
#define STANDARD 0x00 // 标准类别
#define CLASS 0x01 // 特定USB类别定义,HID的请求属于这一类
#define VENDOR 0x02 // 厂商自定义请求
#define RCPT_DEV 0
#define RCPT_INTF 1
#define RCPT_EP 2
#define RCPT_OTH 3
//-------------------------------HID常量定义
/* HID */
#define HID_INTF_ID 0x00 //HID接口ID号
#define HID_UEP UEP1
#define HID_BD_OUT ep1Bo //HID输出事务端点
#define HID_INT_OUT_EP_SIZE 8 //输入事务端点缓冲区大小
#define HID_BD_IN ep1Bi //HID输入事务端点
#define HID_INT_IN_EP_SIZE 8 //输出事务端点缓冲区大小
#define HID_NUM_OF_DSC 1 //HID描述符个数
#define HID_RPT01_SIZE 47 //HID报表描述符大小
#define HID_INTF 0x03
#define HID_INPUT_REPORT_BYTES 2 //输出报表大小
#define HID_OUTPUT_REPORT_BYTES 2 //输入报表大小
#define HID_FEATURE_REPORT_BYTES 2 //特征报表大小
/* Class Descriptor Types */
#define DSC_HID 0x21
#define DSC_RPT 0x22
#define DSC_PHY 0x23
// HID特定请求
#define GET_REPORT 0x01
#define GET_IDLE 0x02
#define GET_PROTOCOL 0x03
#define SET_REPORT 0x09
#define SET_IDLE 0x0A
#define SET_PROTOCOL 0x0B
//--------------------------------端点数以及EP0缓冲区字节数定义
#define EP0_BUFF_SIZE 8 // 8, 16, 32, or 64
#define MAX_NUM_INT 1 // 为跟踪交替设置,中断端点最大个数
#define MAX_EP_NUMBER 1 // 端点号定义,本例用到端点0和1
//--------------------------------端点N的初始化配置字
#define EP_CTRL 0x06 // 配置SETUP事务并是能输入输出
#define EP_OUT 0x0C // 配置使能输出
#define EP_IN 0x0A // 配置使能输入
#define EP_OUT_IN 0x0E // 配置使能输入输出
#define HSHK_EN 0x10 // 使能握手信号
#define _RAM 0 // 数据区区别定义
#define _ROM 1
//---------------------------------USB接入断开标志
#define USB_BUS_ATTACHED 1 //USB上电
#define USB_BUS_DETACHED 0 //USB断点
/* USB Device States - To be used with [byte usb_device_state]
USB设备状态定义,最终应该达到CONFIGURED_STATE状态,算USB与主机配置完成
*/
#define DETACHED_STATE 0 //分离状态
#define ATTACHED_STATE 1 //接入状态
#define POWERED_STATE 2 //使能状态
#define DEFAULT_STATE 3 //缺省状态
#define ADR_PENDING_STATE 4 //地址未决状态
#define ADDRESS_STATE 5 //地址配置状态
#define CONFIGURED_STATE 6 //配置状态
//************************************************************************
#define _PPBM0 0x00 // 乒乓缓冲模式0
#define _PPBM1 0x01 // 乒乓缓冲模式1
#define _PPBM2 0x02 // 乒乓缓冲模式2
#define _LS 0x00 // 低速USB模式
#define _FS 0x04 // 全速USB模式
#define _TRINT 0x00 // 使用内部收发器
#define _TREXT 0x08 // 使用外部收发器
#define _PUEN 0x10 // 使用内部上拉电阻
#define _OEMON 0x40 // 使用OE信号监视器
#define _UTEYE 0x80 // 使能眼图
//***********************************************************************
#define MODE_PP _PPBM0
#define UCFG_VAL _PUEN|_TRINT|_FS|MODE_PP //USB配置寄存器设置
//--------------------------------------数据类型定义
typedef unsigned char byte; // 8-bit
typedef unsigned int word; // 16-bit
typedef unsigned long dword; // 32-bit
//-----------------------------------USB设备状态类型
typedef union _USB_DEVICE_STATUS
{
byte _byte;
struct
{
unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.c
unsigned ctrl_trf_mem:1;// [0]RAM [1]ROM
};
} USB_DEVICE_STATUS;
//-----------------------------------字节位定义类型
typedef union _BYTE
{
byte _byte;
struct
{
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
};
} BYTE;
//------------------------------------字定义类型
typedef union _WORD
{
word _word;
struct
{
byte byte0;
byte byte1;
};
struct
{
BYTE Byte0;
BYTE Byte1;
};
struct
{
BYTE LowB;
BYTE HighB;
};
struct
{
byte v[2];
};
} WORD;
#define LSB(a) ((a).v[0]) //定义低字节(如果是WORD型的可以直接用这个替代高低字节)
#define MSB(a) ((a).v[1]) //定义高字节
//-------------------------------------指针类型定义(双字节的)
typedef union _POINTER
{
struct
{
byte bLow;
byte bHigh;
//byte bUpper;
};
word _word; // bLow & bHigh
//pFunc _pFunc; // Usage: ptr.pFunc(); Init: ptr.pFunc = &<Function>;
byte* bRam; // Ram byte pointer: 2 bytes pointer pointing
// to 1 byte of data
word* wRam; // Ram word poitner: 2 bytes poitner pointing
// to 2 bytes of data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -