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

📄 usb_isr.c

📁 源码 : KIEL C 单片机 : C8051F320 功能 : U盘 (64M) 关键字 : C8051F320,U盘,NANDFLASH,FAT,SCH 描述 : 源码完全可运行
💻 C
字号:
#include "c8051F320.h"
#include "stdio.h"
#include "intrins.h"
/////////////////////////////
#include "Usb_FunDec.h"
#include "Usb_Parameter.h"
#include "Usb_Register.h"
#include "Usb_Request.h"

extern unsigned char  Ep_Status[3];   	
extern unsigned char  USB_State;		
extern unsigned char  Bulk_Status;		

void Usb_Isr() interrupt 8
{
    unsigned char bCommon, bIn, bOut;
    URead_Byte(CMINT, bCommon);			//读中断寄存器
    URead_Byte(IN1INT, bIn);
	URead_Byte(OUT1INT, bOut);
	///////////////////////////////////////////////////////////////////////////////////////
	if (bCommon & rbRSUINT)           // 处理恢复中断
    {
//		printf("This is a Resume Interrupt\n");
		Usb_Resume();
    }    if (bCommon & rbRSTINT)           // 处理复位中断t
    {
//		printf("Reset Interrupt\n");
		Usb_Reset();
    }
	if (bCommon & rbSUSINT)           // 处理挂起中断
    {
//		printf("This is a Susint Interrupt\n");
        Usb_Suspend();
    }
	///////////////////////////////////////////////////////////////////////////////////////    if (bIn & rbEP0)                  				// 如果是端点0中断
    {
//		printf("This is a EP0 Interrupt\n");
        Handle_Setup();              				// 调用端点0中断处理函数
    }
	///////////////////////////////////////////////////////////////////////////////////////    if (bIn & rbIN1)                  				// 如果是端点1中断
    { 
//		printf("This is a EdPoint1 Interrupt\n");                                      
		Handle_In1();				  				// 调用端点1中断处理函数
    }
	///////////////////////////////////////////////////////////////////////////////////////    if (bOut & rbOUT2)                				// 如果是端点2中断
    { 
//		printf("This is a EdPoint2 Interrupt\n");                                      
        Handle_Out2();				  				// 调用端点2中断处理函数
    }   

}

void Usb_Reset()
{
   	USB_State = DEV_DEFAULT;             // 设备到默认状态
   	UWrite_Byte(POWER, 0x00);            
   	Ep_Status[0] = EP_IDLE;              // 端点到空闲状态
   	Ep_Status[1] = EP_HALT;
   	Ep_Status[2] = EP_HALT;
	Bulk_Status  = BULK_IDLE;			 // 批量传输端点状态到空闲状态
}
void Usb_Suspend()
{
	// 此开发中没涉及到相关的操作
}
void Usb_Resume()
{
	// 此开发中没涉及到相关的操作
}

⌨️ 快捷键说明

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