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

📄 vic.c

📁 LPC2400ARM开发参考
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: VIC.c
**创   建   人: zhangbin
**最后修改日期: 2007-1-12
**描        述: LPC2300中断向量控制器(VIC)操作软件包。
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: zhangbin
** 版  本: v1.00
** 日 期: 2007-1-12
** 描 述: VIC初始化。
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
#include "VIC.h"

/*********************************************************************************************************
** 函数名称: enable_IRQ
** 功能描述: 使能IRQ中断
** 入口参数: 无
** 出口参数: 无
** 调试说明:系统必须处于特权模式
********************************************************************************************************/
void	Enable_IRQ(void)
{
	int	tmp;
	__asm
	{	
		MRS	tmp,CPSR
		BIC	tmp,tmp,#0x80
		MSR	CPSR_c,tmp
	}
}
/*********************************************************************************************************
** 函数名称: enable_FIQ
** 功能描述: 使能FIQ中断
** 入口参数: 无
** 出口参数: 无
** 调试说明:系统必须处于特权模式
********************************************************************************************************/
void	Enable_FIQ(void)
{
	int	tmp;
	__asm
	{	
		MRS	tmp,CPSR
		BIC	tmp,tmp,#0x40
		MSR	CPSR_c,tmp
	}	
}
/*********************************************************************************************************
** 函数名称: IRQ_Init
** 功能描述: 进行向量IRQ初始化操作
** 入口参数: no		 :中断源0~31
**         	 priority :IRQ中断通道,0~15
**			 addr	 :中断服务程序地址
** 出口参数: 0 :初始化失败
**           1 :初始化成功
** 调试说明:如果使能外部中断,需要进行中断引脚的设置
********************************************************************************************************/
uint8 IRQ_Init(uint8 no, uint32 Priority, uint32 addr)
{	
	if ((no > 31) || (Priority > 15))
	{
		return (0);							// 如果输入的参数错误,则返回失败信息
	}
	/*  所选择的中断源设置为IRQ中断,不影响其它的中断源 */
	VICIntSelect &= (~(1 << no));				
	*(volatile uint32 *)((&VICVectAddr0) + no) 		 = addr;		// 设置向量地址
	*(volatile uint32 *)((&VICVectPri0)  + Priority) = Priority;	// 设置向量优先级

	VICIntEnable = (1 << no);				// 使能中断
	Enable_IRQ();
	return (1);		
}
/*********************************************************************************************************
** 函数名称: FIQ_Init
** 功能描述: 进行FIQ初始化操作
** 入口参数: no		:中断源0~31
** 出口参数: 0 :初始化失败
**           1 :初始化成功
** 调试说明:如果使能外部中断,需要进行中断引脚的设置
********************************************************************************************************/
uint8 FIQ_Init(uint8 no)
{
	if (no > 31)
	{
		return (0);								// 如果输入的参数错误,则返回失败信息
	}
	VICIntSelect = VICIntSelect  | (1 << no);	// 所选择的中断源设置为IRQ中断,不影响其它的中断源
	VICIntEnable = (1 << no);
	Enable_FIQ();
	return (1);		
}

⌨️ 快捷键说明

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