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

📄 key_eint.c

📁 s3c2410开发板的测试代码,包括lcd
💻 C
字号:
/*
*********************************************************
* Copyright (c)
* All rights reserved.				            
*
* 文件名称:key_Eint.c
* 文件标识:
* 摘    要:S3C2410 External interrupt test Test Program
* 当前版本:1.0
* 作    者:刘征
* 完成日期:2005.4.3
*
* 取代版本:
* 作    者:
* 完成日期:
*********************************************************
*/

/*
*********************************************************
*   					 头文件
*********************************************************
*/
#include <string.h>
#include "def.h"
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h" 

/*
*********************************************************
* 函数介绍:本函数是Eint0中断处理程序。				
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
static void __irq Eint0Int(void)
{
    ClearPending(BIT_EINT0);
    Uart_Printf("EINT0 interrupt is occurred.\n");
}

/*
*********************************************************
* 函数介绍:本函数是Eint1中断处理程序。				
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
static void __irq Eint1Int(void)
{
    ClearPending(BIT_EINT1);
    Uart_Printf("EINT1 interrupt is occurred.\n");
}

/*
*********************************************************
* 函数介绍:本函数是Eint2中断处理程序。				
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
static void __irq Eint2Int(void)
{
    ClearPending(BIT_EINT2);
    Uart_Printf("EINT2 interrupt is occurred.\n");
}

/*
*********************************************************
* 函数介绍:本函数是Eint3中断处理程序。				
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
static void __irq Eint3Int(void)
{
    ClearPending(BIT_EINT3);
    Uart_Printf("EINT3 interrupt is occurred.\n");
}

/*
*********************************************************
* 函数介绍:本函数是测试Eint程序。				
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
void Test_Eint(void)
{
	volatile unsigned int save_gpf;
    int i;
    int extintMode;

    save_gpf = rGPFCON;//保存GPF口原设置
    
    Uart_Printf("[External Interrupt Test through PF 0/1/2/3]\n");

    Uart_Printf("1.L-LEVEL  2.H-LEVEL  3.F-EDGE  4.R-EDGE  5.B-EDGE\n");
    Uart_Printf("Select the external interrupt type.\n");
    extintMode=Uart_Getch();
    Uart_Printf("The external interrupt type is : =%c\n",extintMode);
    
    rGPFCON = (rGPFCON & 0xff00)|(1<<7)|(1<<5)|(1<<3)|(1<<1);		//PF0/1/2/3 = EINT0/1/2/3
     
    switch(extintMode)
    {
    case '1':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x0<<12 | 0x0<<8 | 0x0<<4 | 0x0<<0; //EINT0/1/2/3=low level triggered
    	break;
    case '2':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x1<<12 | 0x1<<8 | 0x1<<4 | 0x1<<0; //EINT0/1/2/3=high level triggered
    	break;
    case '3':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x2<<12 | 0x2<<8 | 0x2<<4 | 0x2<<0; //EINT0/1/2/3=falling edge triggered
    	break;
    case '4':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x4<<12 | 0x4<<8 | 0x4<<4 | 0x4<<0; //EINT0/1/2/3=rising edge triggered
     	break;
    case '5':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x6<<12 | 0x6<<8 | 0x6<<4 | 0x6<<0; //EINT0/1/2/3=both edge triggered
    	break;
    default:
        Uart_Printf("you are not select extintMode !/n");
    	break;
    }
    //如果选择的是高电平中断模式,因为电路设计时KEY是上拉了电阻的。所以会造成中断立即不断产生,难以停下的情况(这种现象正常)。
    Uart_Printf("Press the EINT0/1/2/3 buttons or Press any key to exit.\n");
    
    //设置中断入口函数
    pISR_EINT0=(U32)Eint0Int;
    pISR_EINT1=(U32)Eint1Int;
    pISR_EINT2=(U32)Eint2Int;
    pISR_EINT3=(U32)Eint3Int;

    rEINTPEND = 0xffffff;
    rSRCPND = BIT_EINT0|BIT_EINT1|BIT_EINT2|BIT_EINT3; //to clear the previous pending states
    rINTPND = BIT_EINT0|BIT_EINT1|BIT_EINT2|BIT_EINT3;
    
    rINTMSK=~(BIT_EINT0|BIT_EINT1|BIT_EINT2|BIT_EINT3);//开中断
    
    Uart_Getch();
    Uart_Printf("

    rINTMSK=BIT_ALLMSK; //关中断
    rGPFCON = save_gpf;//还原GPF口设置
}

⌨️ 快捷键说明

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