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

📄 extinterrupt.c

📁 周立功2103开发板CD资料
💻 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 + -