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

📄 int.cxx

📁 Sirf/Centrality公司GPS平台AtlasIII芯片AT640的Nboot源码
💻 CXX
字号:
#include "def.h"
#include "at4x0f.h"
#include "debug.h"
#include "rs232.h"
#include "usbotg.h"

#ifdef RS232_UPDATER
extern uchar			g_serialBuf[];
extern ulong			g_iTail;
#endif // RS232_UPDATER

extern USB_INTERRUPT	usb_int;   

void __irq Irq_Handler()
{
	DWORD iStatus = INT_PENDING;
	DWORD iUsbFuncInt;
#ifdef RS232_UPDATER
#ifdef DEBUG_UART_PORT
	if (iStatus & INT_MASK_SERIAL_0) 
	{
		INT_RISC_MASK &= ~INT_MASK_SERIAL_0;

		iStatus = UART_INT_STATUS;
		if(iStatus & UART_INT_RX_DONE_MASK) 
		{
			while (!(UART_RXFIFO_STATUS & UART_RXFIFO_EMPTY))
			{
				g_serialBuf[g_iTail] = UART_RXFIFO_DATA;
				g_iTail ++;
				g_iTail &= SERIAL_BUF_AND;
			}
		}
		UART_INT_STATUS = iStatus;
		INT_RISC_MASK |= INT_MASK_SERIAL_0;
	}
#else // DEBUG_UART_PORT
	if (iStatus & INT_MASK_SERIAL_7_6_5_4) 
	{
		if(INT_PENDING_EXT & 0x20)
		{ 
			INT_RISC_MASK &= ~INT_MASK_SERIAL_7_6_5_4;
			iStatus = USP5_INT_STATUS;
			if(iStatus & USP_INT_RX_DONE_MASK) 
			{
				while (!(USP5_RXFIFO_STATUS & USP_RXFIFO_EMPTY))
				{
					g_serialBuf[g_iTail] = USP5_RXFIFO_DATA;
					g_iTail ++;
					g_iTail &= SERIAL_BUF_AND;
				}
			}
			USP5_INT_STATUS = iStatus;
			INT_RISC_MASK |= INT_MASK_SERIAL_7_6_5_4;
		}
	}
#endif // DEBUG_UART_PORT
#endif // RS232_UPDATER
	if (iStatus & INT_MASK_USB) 
	{
		usb_int.intr = 1;
		if(USBOTG_TL_INT_STATUS_ADDR & 0x2)
		{
			iUsbFuncInt = USBOTG_FC_SYS_INT_STATUS_ADDR & USBOTG_FC_SYS_INT_EN_ADDR;
			if (iUsbFuncInt & FC_DONE_REG_INT)
			{
				usb_int.ep_done |= USBOTG_FC_DONE_REG_ADDR;
				USBOTG_FC_DONE_REG_ADDR = usb_int.ep_done;
			}

			if (iUsbFuncInt & FC_RESET_DETECT_INT)
			{    	
				if(USBOTG_FC_CMD_STATUS_ADDR & 0x01)
				{
					usb_int.connect_detect = 1;       
				}
			}

			if (iUsbFuncInt & FC_RESUME_FINISH_INT)
			{
    			usb_int.resume = 1;    	
			}

			if (iUsbFuncInt & FC_SUSPEND_DETECT_INT)
			{
    			USBOTG_FC_CMD_STATUS_ADDR |= 0x0004;
			}

			if (iUsbFuncInt & FC_SOF_INT)
			{
				usb_int.sof_int = 1;    	
			}
            
			if (iUsbFuncInt) 
				USBOTG_FC_SYS_INT_STATUS_ADDR = iUsbFuncInt;
		}
	}
}

⌨️ 快捷键说明

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