📄 osintr.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : osintr.c
Desc : 中断处理函数,被汇编中调用.
Author : huangsl
Date : 2007-06-12
Notes :
$Log: osintr.c,v $
Revision 1.2 2008/06/19 04:43:26 Administrator
代码整理!
Revision 1.1.1.1 2008/05/07 04:15:08 Administrator
no message
Revision 1.2 2007/10/08 02:57:19 Lingzhaojun
添加版本自动注释脚本
* huangsl 2007-06-12 修改Interrupt接口名称
*
*********************************************************************/
#include "include.h"
#include "osintr.h"
/****************************************************************/
// 080318,huangsl,OSSCHEDE:PUT TO SDRAM,OSIRQ:PUT TO SRAM.
#pragma arm section code="OSSCHEDE",zidata="OSSCHEDE"
//#pragma arm section code="OSIRQ",zidata="OSIRQ"
INTR_HANDLER irq_vector_table[INTC_MAX_IRQ] =
{
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
}; // IRQ controller interrupt handle vector table; // IRQ controller interrupt handle vector table
/****************************************************************/
int Intr_GetState(void); //0--31
void Intr_ClearFlag(eIRQ_NUM_t vect);
/****************************************************************/
void IrqCHandler(void)
{
int vec = Intr_GetState();
Intr_ClearFlag((eIRQ_NUM_t)vec);
#ifdef ARMULATE
if (vec > INTC_MAX_IRQ)
return ;
#endif
//是否需要判断 vec < INTC_MAX_IRQ
if (irq_vector_table[vec].routine != NULL)
{
irq_vector_table[vec].routine();
}
}
/****************************************************************/
#pragma arm section
/****************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -