📄 vic.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 + -