⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal4rbc.c

📁 smartARM2400 USB OTG例程
💻 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 + -