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

📄 iusbprocessdatafromhost.c

📁 How to control USB interface under SZ platform
💻 C
字号:
// This routine is called by interrupt handler (triggered by OUT endpoint) to handle data
// received from host.

#include "usb_pptt.h"
#include "usb_pdef.h"
#include "usb_pvar.h"

void _iUsbProcessDataFromHost()
{
    U8  i;

    if (_gUsbNumSector > 0)
    {   
        // check whether FIFO contains at least one packet of data 
        while ((_reg_USB_EP3_STAT & 0xFF0000) >= 0x400000)
        {
            // read FIFO dta to buffer
            for (i=0; i<32; i++)
            {
                *(_gpUsbBufPtr++) = _reg_USB_EP3_FDAT;
            }
            _gUsbPacketCount++; // increment packet count        
        
            // check whether one sector (512 bytes = 8 packets) of data has been received
            if (_gUsbPacketCount == 8)
            {
                _gUsbPacketCount = 0;   // reset packet counter
                _iUsbWriteSector();     // write data to sector
                // check whether the last sector has been received
                // if yes, send back acknowledgement
                if (_gUsbNumSector == 0)
                {
                    _reg_USB_EP4_FCTRL |= 0x20000000;   // next write is last one in packet
                    _reg_USB_EP4_FDAT = 0x5000;
                    return;                
                }
            }
        }        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -