📄 hal4rbc.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: Hal4Rbc.c
** Latest modified Date: 2007-10-12
** Latest Version: 1.0
** Descriptions: 大容量类批量传输所需要的USB底层支持函数。
**
**--------------------------------------------------------------------------------------------------------
** Created by: Lizhenming
** Created date: 2007-10-12
** Version: 1.0
** Descriptions: The original version
**
*********************************************************************************************************/
#include "config.h"
#include "RbcBasicType.h"
#include "HAL4RBC.h"
#include "usbdevconfig.h"
#include "USBCI.h"
#include "Chap_9.h"
#define __BOEP_NUM 4 /* 批量输出端口号 */
#define __BIEP_NUM 5 /* 批量输入端口号 */
//extern void single_transmit(INT8U * buf, INT8U len);
//extern INT8U USB_ReadPort2(INT32U len,INT8U *recbuff,INT16U timeout);
//extern INT8U USB_WritePort2(INT32U len,INT8U *sendbuff,INT16U timeout);
//extern void D13_SetEndpointStatus(INT8U bEPIndex,INT8U bStalled);
/*********************************************************************************************************
批量传输所需要的USB底层支持函数(读写端点、设置端点状态等),注意这些操作要在关中断下进行
*********************************************************************************************************/
/*********************************************************************************************************
** Function name: __tpbulkRead
**
** Descriptions: 读取批量输出端点数据,不能正常读出数据时返回__BULKEP_RW_ERR(如端点缓冲区空,
** 端点停止等)
** input parameters: __uint16 len 要读取的数据长度
** __uint8 *buf 接收数据指针
** output parameters: 无
** Returned value: 实际读得的字节数,或__BULKEP_RW_ERR
**
*********************************************************************************************************/
__uint16 __bulkRead (__uint16 len, __uint8 *buf)
{
if (ReadPort2(len, buf, 100) == 0){
return len;
} else {
return __BULKEP_RW_ERR;
}
}
/*********************************************************************************************************
** Function name: __tpbulkWrite
**
** Descriptions: 从批量输入端点发送数据,不能正常发送数据时返回__BULKEP_RW_ERR(如端点缓冲区满,
** 端点停止等)
** input parameters: __uint16 len 要写入的数据长度
** __uint8 *buf 发送数据指针
** output parameters: 无
** Returned value: 实际写入的字节数,或__BULKEP_RW_ERR
**
*********************************************************************************************************/
__uint16 __bulkWrite (__uint16 len, __uint8 *buf)
{
if (WritePort2(len, buf, 100) == 0){
return len;
} else {
return __BULKEP_RW_ERR;
}
}
/*********************************************************************************************************
** Function name: __single_transmit
**
** Descriptions: 通过控制端点0发送单包数据
**
** input parameters: __uint8 len 要写入的数据长度(len 小于控制端点0最大数据包大小)
** __uint8 *buf 发送数据指针
** output parameters: 无
** Returned value: 实际写入的字节数
**
*********************************************************************************************************/
__uint8 __singleTransmit (__uint8 *buf, __uint8 len)
{
single_transmit(buf, len);
return len;
}
/*********************************************************************************************************
** Function name: __BIEPStall
**
** Descriptions: 停止批量输入端点
**
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void __BIEPStall (void)
{
OS_ENTER_CRITICAL();
USB_SetEndpointStatus(5, 1);
//D13_SetEndpointStatus(__BIEP_NUM+1, 0x80);
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** Function name: __BOEPStall
**
** Descriptions: 停止批量输出端点
**
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void __BOEPStall (void)
{
OS_ENTER_CRITICAL();
USB_SetEndpointStatus(4, 1);
//D13_SetEndpointStatus(__BOEP_NUM+1, 0x80);
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -