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

📄 vic.c

📁 ZLG的SMARTARM2300的IAP_Program
💻 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"

/*********************************************************************************************************
** 函数名称:  void	enable_IRQ(void)
** 功能描述:  使能IRQ中断
** 入口参数:  无
** 出口参数:  无
** 说    明:  系统必须处于特权模式
********************************************************************************************************/
static	__inline	void	Enable_IRQ(void)
{
	int	tmp;
	__asm
	{	
		MRS	tmp,CPSR
		BIC	tmp,tmp,#0x80
		MSR	CPSR_c,tmp
	}
}
/*********************************************************************************************************
** 函数名称: void	enable_FIQ(void)
** 功能描述: 使能FIQ中断
** 输 入: 	 无
** 输 出:   无
** 说  明:  系统必须处于特权模式
********************************************************************************************************/
static	__inline	void	Enable_FIQ(void)
{
	int	tmp;
	__asm
	{	
		MRS	tmp,CPSR
		BIC	tmp,tmp,#0x40
		MSR	CPSR_c,tmp
	}
}
/*********************************************************************************************************
** 函数名称:  uint8 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);		
}
/*********************************************************************************************************
** 函数名称:  uint8 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 + -