LPC1114外部中断
rtup_LPC11xx.s”中,在以后用到时再讨论,这里就不给出了。
下面来讨论一个外部中断的例子,要求使用外部中断来实现按键控制LED的亮灭。程序代码如下(假设KEY接在GPIO1.9,LED接在GPIO1.0):
#include
//=================端口1的外部中断服务程序=====================
void PIOINT1_IRQHandler(void)
{
if((LPC_GPIO1->MIS&0x200)==0x200)//检测是否是GPIO1.9引脚上的中断
{
LPC_GPIO1->MASKED_ACCESS[1] = 0; //开启LED
while(LPC_GPIO1->MASKED_ACCESS[512] != 0x200); //等待GPIO1.9引脚按键释放
LPC_GPIO1->MASKED_ACCESS[1] = 1; //关闭LED
}
LPC_GPIO1->IC |= 0x200; //清除GPIO1.9引脚上的中断标志
}
//==========================主程序============================
int main(void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1<16); //使能IOCON时钟
LPC_IOCON->R_PIO1_0 = 0XD1; //把芯片上的33脚设置为GPIO1.0功能
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<16); //禁能IOCON时钟
LPC_GPIO1->DIR &= ~(1<9); //设置GPIO1.9为输入方向
LPC_GPIO1->DIR |= (1<0); //设置GPIO1.0为输出方向
LPC_GPIO1->MASKED_ACCESS[1] = 1; //输出高电平,关闭LED
LPC_GPIO1->IS &= ~(1<9); //选择中断为边沿触发
LPC_GPIO1->IEV &= ~(1<9); //选择下降沿触发
LPC_GPIO1->IE |= (1<9); //设置中断P1.9不被屏蔽
NVIC_EnableIRQ(EINT1_IRQn); //使能GPIO1中断
while(1)
{
;
}
}
把上述程序编译后下载到LPC1114中,给系统上电,可以看出在按下KEY后LED亮,放开KEY后LED灭,达到了使用外部中断控制的目的。
最后说明一点,如果需要打开或关闭中断“总中断”,可调用“__enable_irq();和__disable_irq();”来实现,它们是通过调用汇编语言来实现这一操作的,具体的原型在头文件“core_cmFunc.h”中,可自行查看,这里就不详述了。
LPC1114外部中 相关文章:
- LPC1114_外部中断程序_MDK编译环境(11-29)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)