📄 eint01.c
字号:
/****************************************************************************
* File:EINT01.C
* 功能:使能外部中断0和外部中断1,当外部中断0有效时,控制LED1取反;
* 当外部中断1有效时,控制取反LED2。
* 说明:将跳线器JP8_LED1、JP8_LED2短接。
****************************************************************************/
#include "config.h"
#define LED1CON 0x00000400 /* P0.10引脚控制LED1,低电平点亮 */
#define LED2CON 0x00000800 /* P0.11引脚控制LED2,低电平点亮 */
/****************************************************************************
* 名称:IRQ_Eint0()
* 功能:外部中断EINT0服务函数,取反LED1。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void __irq IRQ_Eint0(void)
{ uint32 i;
i = VICIRQStatus; // 读出VICIRQStatus的值
i = IOSET; // 读取当前LED1控制值
if( (i&LED1CON)==0 ) // 控制LED1输出
{ IOSET = LED1CON;
}
else
{ IOCLR = LED1CON;
}
while( (EXTINT&0x01)!=0 ) // 等待外部中断信号恢复为高电平
{ EXTINT = 0x01; // 清除EINT0中断标志
}
VICVectAddr = 0x00;
}
/****************************************************************************
* 名称:IRQ_Eint1()
* 功能:外部中断EINT1服务函数,取反LED2。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void __irq IRQ_Eint1(void)
{ uint32 i;
i = VICIRQStatus; // 读出VICIRQStatus的值
i = IOSET; // 读取当前LED2控制值
if( (i&LED2CON)==0 ) // 控制LED2输出
{ IOSET = LED2CON;
}
else
{ IOCLR = LED2CON;
}
VICVectAddr = 0x00;
while( (EXTINT&0x02)!=0 ) // 等待外部中断信号恢复为高电平
{ EXTINT = 0x02; // 清除EINT1中断标志
}
VICVectAddr = 0x00;
}
/****************************************************************************
* 名称:main()
* 功能:初始化外部中断0、外部中断1及IO连接等。
****************************************************************************/
int main(void)
{ PINSEL0 = 0x20000000; // 设置IO口工作模式,P0.14设置为EINT1
PINSEL1 = 0x00000001; // P0.16设置为EINT0
IODIR = LED1CON|LED2CON; // 设置LED1、LED2控制口为输出,其它I/O为输入
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl0 = 0x2E; // EINT0通道分配到IRQ slot 0,即优先级最高
VICVectAddr0 = (int)IRQ_Eint0; // 设置EINT0向量地址
VICVectCntl1 = 0x2F;
VICVectAddr1 = (int)IRQ_Eint1;
VICIntEnable = 0x0000C000; // 使能EINT0、EINT1中断
EXTINT = 0x07; // 清除外部中断标志
while(1); // 等待中断
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -