📄 usbdevdriver.h
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: usbDevDriver.c
** Latest modified Date: 2008-05-10
** Latest Version: 1.1
** Descriptions: ZLG_USB2400 Device 软件包应用层头文件
**
**--------------------------------------------------------------------------------------------------------
** Created by: ZhengMingyuan
** Created date: 2005-01-06
** Version: 1.0
** Descriptions: The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by: LingGuilin
** Modified date: 2008-05-10
** Version: 1.1
** Descriptions: 修改部分代码以符合代码规范v1.2
**
*********************************************************************************************************/
#ifndef __USBDEVDRIVER_H
#define __USBDEVDRIVER_H
/*********************************************************************************************************
USB 收发错误码宏定义
*********************************************************************************************************/
#define USB_NO_ERR 0x00 /* USB Device操作正确 */
#define USB_ERR_NO_CONFIG 0x01 /* USB总线未配置完成 */
#define USB_ERR_BUFF_INVALID 0x02 /* 接收或发送缓冲区错误 */
#define USB_ERR_WR_TIMEOUT 0x03 /* 接收或发送超时错误 */
#define USB_ERR_CREATETASK_FAIL 0x04
#define USB_ENDP_STALLED 0x05
#define USB_ERR_READ_TESTREG 0x10 /* 读测试寄存器失败 */
#define USB_ERR_CREATE_SEM 0x11 /* 创建信号量失败 */
#define USB_ERR_ENDP_OCCUPY 0x12 /* 端点已被其它任务占用 */
/*********************************************************************************************************
usbDevTaskSetup任务接收消息宏定义
*********************************************************************************************************/
#define __USB_DEV_SETUP_NORMAL 0x01 /* SETUP处理消息 */
#define __USB_DEV_SETUP_DELTASK 0x02 /* 删除SETUP处理任务消息 */
/*********************************************************************************************************
USB 传输控制块结构体
*********************************************************************************************************/
__packed struct tagUsb_Struct
{
OS_EVENT *Ep_Sem; /* 端点收/发信号量 */
INT8U bEpUsed; /* 端点正被其它任务使用 */
INT8U bTaskWaiting; /* 任务已进入等待状态 */
INT8U bEpReady; /* 端点就绪,完成数据传输 */
#if DMA_ENGINE_EN
INT8U *buff; /* 用户接收/发送缓冲区 */
INT32U len; /* 接收/发送数据长度 */
INT32U cnt; /* 已传输字节数计数器 */
#endif
};
typedef struct tagUsb_Struct CTRL_USB;
extern CTRL_USB Ctrl_Usb[NUM_ENDPOINTS];
/*********************************************************************************************************
USB 事件标志结构体
*********************************************************************************************************/
struct __stflags {
unsigned bus_reset : 1; //总线复位
unsigned suspend : 1; //总线挂起改变
unsigned con_change : 1; //总线连接改变
unsigned setup_packet : 1; //接收到SETUP包
unsigned remote_wakeup : 1; //远程唤醒标志
unsigned in_isr : 1; //进入USB设备中断服务程序标志
unsigned control_state : 2; //控制端点处理状态
//0: 空闲状态
//1: 数据发送状态
//2: 数据接收状态
unsigned configuration : 1; //USB设备配置完成标志(0:未配置;1:已配置)
unsigned command : 1; //未使用
unsigned ep1_rxdone : 1; //逻辑端点1接收到数据标志
unsigned ep2_rxdone : 1; //逻辑端点2接收到数据标志
unsigned ep1_rxdma : 1; //逻辑端点1(DMA)接收到数据标志
unsigned ep2_rxdma : 1; //逻辑端点2(DMA)接收到数据标志
};
typedef struct __stflags __FLAGS; /* 重定义标志位结构体类型 */
union __unflags {
__FLAGS bits;
INT16U value;
};
typedef union __unflags EPPFLAGS; /* 重定义标志位共用体类型 */
extern EPPFLAGS bEPPflags;
/*********************************************************************************************************
SETUP包处理任务堆栈与信号量
*********************************************************************************************************/
extern OS_STK usbDevTaskSetupStk[128];
extern OS_EVENT *pSetup_Event;
/*********************************************************************************************************
下面为软件包内部使用的函数
*********************************************************************************************************/
/*********************************************************************************************************
** Function name: __usbDevRwParam
** Descriptions: 填写USB接收或发送控制块有关参数
** input parameters: pstUsb: USB 传输控制块结构体指针
** pucBuf: 接收或发送数据缓冲区指针
** output parameters: 无
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U __usbDevRwParam (CTRL_USB *pstUsb, INT8U *pucBuf);
/*********************************************************************************************************
下面为提供给用户使用的API函数
*********************************************************************************************************/
/*********************************************************************************************************
** Function name: usbDevInit
** Descriptions: 初始化 USB 设备控制器
** input parameters: ucDevTaskSetupPrio: usbDevTaskSetup任务优先级
** output parameters: 无
** Returned value: 初始化成功 0
** 初始化失败 错误码
*********************************************************************************************************/
extern INT8U usbDevInit (INT8U ucDevTaskSetupPrio);
/*********************************************************************************************************
** Function name: usbDevDeInit
** Descriptions: USB 设备控制器反初始化
** input parameters: 无
** output parameters: 无
** Returned value: TRUE:反初始化成功
*********************************************************************************************************/
extern INT8U usbDevDeInit (void);
/*********************************************************************************************************
** Function name: usbDevTaskSetup
** Descriptions: USB 设备控制器控制传输处理
** input parameters: 无
** output parameters: 无
** Returned value: 该任务的优先级应高于其它任务,才能在任何情况下传输SETUP包
*********************************************************************************************************/
extern void usbDevTaskSetup (void *pdata);
/*********************************************************************************************************
** Function name: usbDevException
** Descriptions: USB 设备控制器中断服务程序
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
extern void usbDevException (void);
/*********************************************************************************************************
** Function name: usbDevReadPort1
** Descriptions: 从USB Device的逻辑端点1读取数据
** input parameters: ulReadLen 待读取字节数
** usWaitTime 等待超时时间ms
** output parameters: pucRcvBuf 接收数据缓冲区指针
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevReadPort1 (INT8U *pucRcvBuf,
INT32U ulReadLen,
INT16U usWaitTime);
/*********************************************************************************************************
** Function name: usbDevReadPort2
** Descriptions: 从USB Device的逻辑端点1读取数据
** input parameters: ulReadLen 待读取字节数
** usWaitTime 等待超时时间ms
** output parameters: pucRcvBuf 接收数据缓冲区指针
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevReadPort2 (INT8U *pucRcvBuf,
INT32U ulReadLen,
INT16U usWaitTime);
/*********************************************************************************************************
** Function name: usbDevWritePort1
** Descriptions: 向USB Device的逻辑端点1写入数据
** input parameters: pucSendBuf: 待发送数据缓冲区指针
** ulSendLen: 待发送字节数
** usWaitTime: 等待超时时间,单位Clock Tick
** output parameters: 无
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevWritePort1 (INT8U *pucSendBuf,
INT32U ulSendLen,
INT16U usWaitTime);
/*********************************************************************************************************
** Function name: usbDevWritePort2
** Descriptions: 向USB Device的逻辑端点2写入数据
** input parameters: pucSendBuf: 待发送数据缓冲区指针
** ulSendLen: 待发送字节数
** usWaitTime: 等待超时时间,单位Clock Tick
** output parameters: 无
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevWritePort2 (INT8U *pucSendBuf,
INT32U ulSendLen,
INT16U usWaitTime);
#endif /* __USBDEVDRIVER_H */
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -