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

📄 usbintrhandler.c

📁 How to control USB interface under SZ platform
💻 C
字号:
// This is the main handler for USB interrups.
// It will then call appropriate routine to according to the nature of the
// interrupt.

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

void _UsbIntrHandler(void)
{
    // handle general interrupt
    if (_reg_USB_ISR & USB_INTR_GEN_MASK)
    {
/*    
        // nothing to be done for CFG_CHG interrupt, just clear the interrupt flag
        if (_reg_USB_GEN_ISR & USB_CFG_CHG_MASK)
        {
        }
*/        
        // reset signalling from host
        if (_reg_USB_GEN_ISR & USB_RESET_MASK)
        {
            _iUsbReset();
        }
        // It seems that the command over mechanism is not functioning
        // properly. So we'll signal command over every frame.
        if (_reg_USB_GEN_ISR & USB_SOF_MASK)
        {
            _reg_USB_CTRL |= USB_CTRL_CMOV_MASK;    // signal CMD_OVER
        }
        _reg_USB_GEN_ISR = 0x800000FF;
    }
    
    /* handle interrupt from EP0 (device request) */
    if (_reg_USB_ISR & USB_INTR_EP0_MASK)
    {
        _iUsbHandleDevReq();
        _reg_USB_EP0_ISR = 0x1FF;   // clear all interrupts
    }
    
    /* handle interrupt from EP3 */
    if (_reg_USB_ISR & USB_INTR_EP3_MASK)
    {
        if (_reg_USB_EP3_ISR & USB_EPINTR_EOT_MASK)
        {   // EOT interrupt, command from host
            _reg_USB_MASK = ENABLE_CFG_CHG & ENABLE_RESET;
            _iUsbProcessCommand();
        }
        if (_reg_USB_EP3_ISR & USB_EPINTR_EOF_MASK)
        {   // EOF interrupt, data transfer from host complete
            _iUsbProcessDataFromHost();
        }
        _reg_USB_EP3_ISR = 0x1FF;   // clear all interrupts
    }

    /* handle interrupt from EP4 (EOF interrupt, data transfer to host complete) */
    if (_reg_USB_ISR & USB_INTR_EP4_MASK)
    {
        _iUsbProcessDataToHost();
        _reg_USB_EP4_ISR = 0x1FF;   // clear all interrupts
    }
}

⌨️ 快捷键说明

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