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