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

📄 isr.c

📁 该软件源程序示范了如何在嵌入式系统中实现USB-OTG协议
💻 C
字号:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   2005 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // Project:		ISP1302 Eva Kit
   // File Name:	ISR.C
    // Author:		Guo Yang Bin, Email: guo.yang.bin@philips.com
   // Created:		Nov.20, 2005
   // Modified:
   // Revision:		1.0
   //*************************************************************************

   //*************************************************************************
	   isr.c is mainly in charged of Interrupt proccessing 
   //*************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include "BasicTyp.h"
#include "HAL4Sys.h"
#include "isr.h"
#include "mainloop.h"
#include "function.h"

void interrupt (*OldUsbIsr)();
/*
//*************************************************************************
//  ISR Subroutine
//*************************************************************************
*/
void interrupt usb_isr(void)
{                    
//	Hal4Sys_ControlD09Interrupt(FALSE);
//	fn_usb_isr();
//    Hal4Sys_End_Int();
}

void fn_usb_isr(void)
{
	 UCHAR Int_flags;
	 UCHAR Int_source;

     Int_source = Hal4Sys_Read(GET_INT_SOURCE);
     Int_flags = Hal4Sys_Read(SET_INT_LATCH); 

     Hal4Sys_Write(Int_flags, CLR_INT_LATCH);	
	 if(Int_flags & VBUS_DET)
	 {
		 if(Int_source & VBUS_DET)
    	    Isr_vbus_det_high();
		 else
    	    Isr_vbus_det_low();
	 }
	 if(Int_flags & SESS_VLD)
	 {
		 if(Int_source & SESS_VLD)
    	    Isr_sess_vld_high();
		 else
    	    Isr_sess_vld_low();
	 }

	 if(Int_flags & DP_HI)
	 {
		 if(Int_source & DP_HI)
    	    Isr_dp_hi_high();
		 else
    	    Isr_dp_hi_low();
	 }

	 if(Int_flags & ID_GND)
	 {
		 if(Int_source & ID_GND)
    	    Isr_id_gnd_high();
		 else
    	    Isr_id_gnd_low();
	 }

	 if(Int_flags & SE1)
	 {
		 if(Int_source & SE1)
    	    Isr_se1_iel_high();
		 else
    	    Isr_se1_iel_low();
	 }

	 if(Int_flags & ID_FLOAT)
	 {
		 if(Int_source & ID_FLOAT)
    	    Isr_id_float_high();
		 else
    	    Isr_id_float_low();
	 }

	 if(Int_flags & BDIS_ACON)
	 {
		 if(Int_source & BDIS_ACON)
    	    Isr_bdis_int_high();
		 else
    	    Isr_bdis_low();
	 }

	 if(Int_flags & DP_INT)
	 {
		 if(Int_source & DP_INT)
    	    Isr_dp_int_high();
		 else
    	    Isr_dp_int_low();
	 }
}

void Isr_vbus_det_high(void)
{
    cprintf("VBUS Higher than Vbus_hi 3.0~3.6V\r\n");
    cprintf("Please select: ");
}

void  Isr_vbus_det_low(void)
{
    cprintf("VBUS Lower than Vbus_hi 3.0~3.6V\r\n");
    cprintf("Please select: ");
}

void Isr_sess_vld_high(void)
{
    cprintf("VBUS Higher than Vsess_vld 0.8~2.0V\r\n");
    cprintf("Please select: ");
}

void Isr_sess_vld_low(void)
{
    cprintf("VBUS Lower than Vsess_vld 0.8~2.0V\r\n");
    cprintf("Please select: ");
}

void Isr_dp_hi_high(void)
{
    cprintf("DP High\r\n");
    cprintf("Please select: ");
}

void Isr_dp_hi_low(void)
{
    cprintf("DP Low\r\n");
    cprintf("Please select: ");
}

void Isr_id_gnd_high(void)
{
    cprintf("ID pin grounded\r\n");
    cprintf("Please select: ");
}

void Isr_id_gnd_low(void)
{
    cprintf("ID pin not grounded\r\n");
    cprintf("Please select: ");
}

void Isr_se1_iel_high(void)
{
    cprintf("SE1 detected\r\n");
    cprintf("Please select: ");
}

void Isr_se1_iel_low(void)
{
    cprintf("SE1 not detected\r\n");
    cprintf("Please select: ");
}

void Isr_id_float_high(void)
{
    cprintf("ID pin floating\r\n");
    cprintf("Please select: ");
}

void Isr_id_float_low(void)
{
    cprintf("ID pin not floating\r\n");
    cprintf("Please select: ");
}

void Isr_bdis_int_high(void)
{
    cprintf("BDIS detected\r\n");
    cprintf("Please select: ");
}


void Isr_bdis_low(void)
{
    cprintf("BDIS lost \r\n");
    cprintf("Please select: ");
}

void Isr_dp_int_high(void)
{
    cprintf("DP lower than 0.4~0.6 for TMR_DP_INT\r\n");
    cprintf("Please select: ");
}

void Isr_dp_int_low(void)
{
    cprintf("DP higher than 0.4~0.6 \r\n");
    cprintf("Please select: ");
}


/*
//*********************************************************************
// supporting Functions
//*********************************************************************
*/


⌨️ 快捷键说明

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