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

📄 swi.c

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

/*
*********************************************************
*   					 头文件
*********************************************************
*/
#include "def.h"
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h" 
#include "swi.h"
#include "swis.h"

/*
*********************************************************
*  					  函数
*********************************************************
*/
__swi(0x87) void SwiTest(void);//声明软中断

/*
*********************************************************
*  					  变量
*********************************************************
*/
volatile int swiVar;

/*
*********************************************************
* 函数介绍:本函数软中断处理程序。			
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
void __irq Isr_SwiTest(void)
{
    rINTMSK = rINTMSK | BIT_EINT0;
    ClearPending(BIT_EINT0);    
    SwiTest();//触发软中断(SWI)
    swiVar++;
}

/*
*********************************************************
* 函数介绍:本函数软中断测试程序。			
* 输入参数:无
* 输出参数:无
* 返回值  :无
*********************************************************
*/
void Test_SwiIrq(void)
{
	unsigned int save_PE;
	
    swiVar = 1;    
    save_PE = rGPEUP;//save GPF
    
    //set eint0
    rGPFUP   = ((rGPFUP   & ~(1<<0)) | (1<<0));     //GPF0
    rGPFCON  = ((rGPFCON  & ~(3<<0)) | (1<<1));     //GPF0=EINT0    
    
    rEXTINT0 = ((rEXTINT0 & ~(7<<0)) | (2<<0));     //EINT0=falling edge triggered
    
    //print info
    Uart_Printf("[ SWI Test ]\n");
    Uart_Printf("swiVar = %d\n",swiVar);
    //EINT0 interrupt bit in rINTPND will be set.
    pISR_EINT0 = (U32)Isr_SwiTest;
    pISR_SWI   = (U32)SWI_ISR;
    rINTMSK    = rINTMSK & ~(BIT_EINT0);
    
    Uart_Printf("If you want to swi ,push the 'EIN0' key \n");
    
    while(1==swiVar);
    
    rGPEUP  = save_PE;//revert GPF    
    rINTMSK = rINTMSK | BIT_EINT0;
    
    Uart_Printf("swiVar = %d\n",swiVar);
    if(swiVar>1)
    {
    	Uart_Printf("swi interrupt is happened!\n");//SWI 中断发生
    }
    else
    {
    	Uart_Printf("swi interrupt is not happened!\n");//SWI 中断没有发生
    }
}

⌨️ 快捷键说明

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