📄 extinterrupt.c
字号:
/*********************************************************************************************************
**文件名称: ExtInterrupt.c
**功能说明: 外部中断操作软件包
**使用说明:
********************************************************************************************************/
#include "config.h"
#include "ExtInterrupt.h"
/*********************************************************************************************************
**函数名称:uint8 SetExtInt(uint8 no, uint8 mode, uint8 bWakeUp)
**函数功能:设置外部中断属性
**入口参数:no 外部中断,取值0~2
mode 中断触发类型,取值如下:
0:低电平触发 1:高电平触发
2:下降沿触发 3:上升沿触发
bWakeUp 是否使能中断唤醒CPU。 0:不唤醒CPU >0:使能唤醒CPU
**出口参数:0 :参数错误
** 1 :操作成功
**说明:
********************************************************************************************************/
uint8 SetExtInt(uint8 no, uint8 mode, uint8 bWakeUp)
{
if(no > 2) return 0; //返回参数错误
if(mode>3) return 0;
if(0==no)
{ //连接EINT0
PINSEL1 &= ~(0x000003);
PINSEL1 |= 0x000001;
}
else if(1==no)
{ //连接EINT1
PINSEL0 &= ~(3<<28);
PINSEL0 |= (1<<28);
}
else
{ //连接EINT2
PINSEL0 &= ~(0x80000000 | 0x40000000);
PINSEL0 |= (1<<30);
}
EXTINT &= 1<<no; //清零EXINT中断标志
if(bWakeUp > 0)
{
bWakeUp = 1;
INTWAKE |= bWakeUp<<no; //设置唤醒标志
}
switch(mode)
{
case 0: //低电平触发
EXTMODE &= ~(1<<no);
EXTPOLAR &= ~(1<<no);
break;
case 1: //高电平触发
EXTMODE &= ~(1<<no);
EXTPOLAR |= (1<<no);
break;
case 2: //下降沿触发
EXTMODE |= (1<<no);
EXTPOLAR &= ~(1<<no);
break;
case 3: //上升沿触发
EXTMODE |= (1<<no);
EXTPOLAR |= (1<<no);
break;
default:
break;
}
return 1;
}
/*********************************************************************************************************
**函数名称:void CleanExtIntFlg(uint8 no)
**函数功能:清零指定的外部中断标志
**入口参数:no 外部中断,取值0~2
**出口参数:无
**说明:
********************************************************************************************************/
void CleanExtIntFlg(uint8 no)
{
EXTINT &= 1<<no;
}
/*********************************************************************************************************
**函数名称: uint8 IsExtInt(uint8 no)
**函数功能: 判断是否产生指定的外部中断
**入口参数: no 外部中断,取值0~2
**出口参数: 0:没产生外部中断
** >1:产生了外部中断
**说明:
********************************************************************************************************/
uint8 IsExtInt(uint8 no)
{
return (EXTINT & (1<<no));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -