📄 iusbprocessdatafromhost.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 + -