📄 interrupt.c
字号:
#include <iom16v.h>
#include <macros.h>
#include "define.h"
#include "initial.h"
#include "pdiusbd12.h"
#include "endpointfun.h"
#include "descriptor.h"
#include "chap9.h"
#pragma interrupt_handler USB_Interrupt:2
void USB_Interrupt(void)
{
uint InterruptType;
DISABLE; //EA=0;
bEPPflags.bits.in_isr = 1;
InterruptType=D12_ReadInterruptRegister();
if(InterruptType != 0)
{ if(InterruptType & 0x80)
bEPPflags.bits.suspend = 1;
if(InterruptType & 0x0100)
dma_eot();
if(InterruptType & 0x40)
bEPPflags.bits.bus_reset =1;
if(InterruptType & 0x20)
MainInEndpoint();
if(InterruptType & 0x10)
MainOutEndpoint();
if(InterruptType & 0x08)
Endpoint_1_In();
if(InterruptType & 0x04)
Endpoint_1_Out();
if(InterruptType & 0x02)
Control_In();
if(InterruptType & 0x01)
Control_Out();
}
bEPPflags.bits.in_isr = 0;
ENABLE; //EA=1;
}
void usbserve(void)
{
if (bEPPflags.bits.setup_packet){ //Setup包处理
DISABLE; //EA=0;
bEPPflags.bits.setup_packet = 0;
control_handler(); //调用请求处理子程序
ENABLE ; //EA=1;
}
if (bEPPflags.bits.bus_reset) { //USB总线复位处理
DISABLE ; //EA=0;
bEPPflags.bits.bus_reset = 0;
ENABLE ; //EA=1;
d12_busreset();
}
if (bEPPflags.bits.suspend) { //D12挂起改变处理
DISABLE ; //EA=0;
bEPPflags.bits.suspend= 0;
ENABLE ; //EA=1;
d12_suspend();
}
//在此添加其它usb事件处理代码
}
void d12_busreset(void)
{
//在此添加总线复位处理代码
}
/*******************************************************************
** 函数名称: dma_eot()
** 功能描述: DMA结束处理函数
** 输 入: 无
** 输 出: 无
********************************************************************/
void dma_eot(void)
{
//在此添加DMA结束处理代码
}
/*******************************************************************
** 函数名称: d12_suspend()
** 功能描述: 总线挂起改变处理函数
** 输 入: 无
** 输 出: 无
********************************************************************/
void d12_suspend(void)
{
//在此添加总线挂起改变代码
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -