微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LPC1114外部中断

LPC1114外部中断

时间:11-13 来源:互联网 点击:

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”中,可自行查看,这里就不详述了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top