• 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

学习LPC1768库函数之外部中断实验

02/05 16:07
788
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LPC1768只有P0和P2有中断功能,这个两个端口共用中断线3,可以配置上升沿触发或者下降沿触发。什么是上升沿?什么是下降沿?

上升沿是低电平高电平的过程。

下降沿是高电平到低电平的过程。

原理图当中可以看出,要设置为下降沿触发。

void KEY_Config(void){
//第一步 使能GPIO时钟功率,只有使能了GPIO时钟功率,才能有效操作Gpio寄存器
Chip_GPIO_Init(LPC_GPIO);//打开GPIO时钟功率
//第二步 设置GPIO为普通GPIO功能,关闭上下拉。 Chip_IOCON_PinMux(LPC_IOCON, 2, 10, IOCON_MODE_INACT, IOCON_FUNC0);//设置P2.0为GPIO功能
Chip_IOCON_PinMux(LPC_IOCON, 2, 11, IOCON_MODE_INACT, IOCON_FUNC0);
Chip_IOCON_PinMux(LPC_IOCON, 2, 12, IOCON_MODE_INACT, IOCON_FUNC0);
Chip_IOCON_PinMux(LPC_IOCON, 2, 25, IOCON_MODE_INACT, IOCON_FUNC0);
Chip_IOCON_PinMux(LPC_IOCON, 2, 26, IOCON_MODE_INACT, IOCON_FUNC0);
Chip_IOCON_PinMux(LPC_IOCON, 2, 27, IOCON_MODE_INACT, IOCON_FUNC0);
Chip_IOCON_PinMux(LPC_IOCON, 2, 28, IOCON_MODE_INACT, IOCON_FUNC0);
Chip_IOCON_PinMux(LPC_IOCON, 2, 29, IOCON_MODE_INACT, IOCON_FUNC0);
//第三步 设置GPIO为输入模式,因为是要读取外部电路电平值。
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 10, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 11, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 12, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 25, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 26, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 27, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2,28, false);//设置输入模式
Chip_GPIO_SetPinDIR(LPC_GPIO,2, 29, false);//设置输入模式
//第四步 P2.10,P2.11,设置下降沿触发
Chip_GPIOINT_SetIntFalling(LPC_GPIOINT, 2, 0x03 << 10);//P2.10,P2.11,设置下降沿触发
//第五步 //使能中断线3
NVIC_EnableIRQ(EINT3_IRQn);//使能中断

}

/************************************************************************************************
函数名:void EINT3_IRQHandler(void)
函数功能:中断服务函数
参数:无
返回值:无
*************************************************************************************************/
void EINT3_IRQHandler(void)
{

if(Chip_GPIOINT_GetStatusFalling(LPC_GPIOINT,2)>>10&0x01){//判断是否为P2.10发生下降沿触发标志
Chip_GPIOINT_ClearIntStatus(LPC_GPIOINT, 2, 1 << 10);//清除中断标志
LED4_ON(1);
}
else if(Chip_GPIOINT_GetStatusFalling(LPC_GPIOINT,2)>>11&0x01){

Chip_GPIOINT_ClearIntStatus(LPC_GPIOINT, 2, 1 << 1);//清除中断标志
LED5_ON(1);
}

}

相关推荐

电子产业图谱