📄 drv_usb_irq.c
字号:
/************************************************* Copyright (C), 2007, DTK Computer. File name: drv_usb_irq.c Author: MMI Group Version: 1.0 Date: 2008.04.30 Description: usb module for interrupt Others: Function List: History: <author> <time> <version > <desc> Bosco Lee 08/30/04 1.0 build this moudle *************************************************/#include "drv_usb_irq.h"extern void usb_mainthread ();usb_mainthread (){ init_usb_descriptor (); while (1) { if (usb_exit == 1) { break; } usbserve(); usb_halt (); // sleep (1); }// pthread_mutex_unlock(&usb_mutex); thread_usb = 0;}/*********************************************************************** ** 函数名称: void Usb_Exception(void) ** 功能描述: USB中断服务程序 判断中断类型 *************************************************************************/voidUsb_Exception (void){ D_UINT8 i_st; DISABLE (); //进入USB中断服务程序时关中断 bEPPflags.bits.in_isr = 1; i_st = USB_ReadInterruptRegister (); //读取PDIUSBUSB中断寄存器值 if (i_st != 0) { if (i_st & SC_TRANS_DONE_BIT) { USB_ClearInterruptRegister (SC_TRANS_DONE_BIT); bEPPflags.bits.trans_done = 1; usb_unhalt (); frm_printf ("trans_done done"); } if (i_st & SC_SUSPEND_INT_BIT) { USB_ClearInterruptRegister (SC_SUSPEND_INT_BIT); sleep(2); frm_printf ("suspend done"); } if (i_st & SC_RESUME_INT_BIT) { USB_ClearInterruptRegister (SC_RESUME_INT_BIT); sleep(2); frm_printf ("resume done"); } if (i_st & SC_RESET_EVENT_BIT) { USB_ClearInterruptRegister (SC_RESET_EVENT_BIT); frm_printf ("reseting "); bEPPflags.bits.bus_reset = 1; usb_unhalt (); } if (i_st & SC_SOF_RECEIVED_BIT) { USB_ClearInterruptRegister (SC_SOF_RECEIVED_BIT); sleep(2); frm_printf ("SOF done"); } if (i_st & SC_NAK_SENT_INT_BIT) { USB_ClearInterruptRegister (SC_NAK_SENT_INT_BIT); sleep(2); frm_printf ("NAK-set done"); } } bEPPflags.bits.in_isr = 0; ENABLE (); //退出USB中断服务程序时开中断}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -