2855|1

67

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

3.【学习LPC1768库函数】之外部中断实验 [复制链接]

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);
                }

}


此内容由EEWORLD论坛网友cxmdz原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自NXP MCU论坛

最新回复

PJB
谢谢共享,学习了   详情 回复 发表于 2019-11-12 12:55
点赞 关注
 

回复
举报

7

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

谢谢共享,学习了

此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表