📄 usbtask.h
字号:
//USB TASK
static bdata bit disconnected;
static idata Byte usb_resume_counter;
/*F**************************************************************************
* NAME: usb_task_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
* USB task initialization
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void usb_task_init (void)
{
disconnected = 0;
clock_usb_init(); /* for suspend detection */
usb_init();
}
/*F**************************************************************************
* NAME: usb_task
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
* USB task
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
* In order to avoid spurious connection, resume is done after the resume
* event has been detected at least #USB_WAIT_NB_RESUME times.
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void usb_task (void)
{
if (Usb_suspend()) /* -- if suspend flag -- */
{
if (disconnected == 0)
{
disconnected = 1;
clock_disable();
// mode_exit_download();
// usb_resume_counter = USB_WAIT_NB_RESUME;
}
if (Usb_resume()) /* check if resume */
{
if (usb_resume_counter == 0)
{
// mode_set_download();
clock_usb_init();
// print_mode_mass(); /* display mass storage icon */
// print_screen(MASS_SCREEN); /* display storage screen */
disconnected = 0;
Usb_clear_SPINT();
Usb_clear_WUPCPU();
Usb_clear_SOFINT();
}
else
{
Usb_clear_WUPCPU();
Usb_clear_SOFINT();
usb_resume_counter--;
}
}
}
else
{
if (Usb_reset()) /* if end of reset */
{
Usb_enable_SPINT(); /* Suspend interrupt enable */
disconnected = 0;
Usb_clear_rx_bank();
Usb_clear_WUPCPU();
Usb_clear_SPINT();
Usb_clear_EORINT();
// ms_multiple_drive = FALSE; /* multiple disk support init */
// gl_sbc_wr_protect = Kbd_key_locked(); /* set write protect flag */
// Sbc_chip_init(); /* on-board memory SCSI driver init */
// Sbc_card_init(); /* card memory SCSI driver init */
}
if (UEPINT != 0) /* new command */
{
Usb_select_ep(EP_CONTROL);
if (Usb_setup_received())
{
usb_enumeration_process();
}
Usb_select_ep(EP_OUT);
if (Usb_rx_complete())
{
// gl_sbc_wr_protect = Kbd_key_locked(); /* set write protect flag */
Usb_enable_int();
// usb_mass_storage_cbw();
// usb_mass_storage_csw();
Usb_disable_int();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -