请选择 进入手机版 | 继续访问电脑版
查看: 573|回复: 2

[原创] 3.【学习LPC1768库函数】之外部中断实验

[复制链接]
  • TA的每日心情
    开心
    12 小时前
  • 签到天数: 2 天

    [LV.1]初来乍到

    13

    主题

    27

    帖子

    0

    金豆

    中级会员

    Rank: 3Rank: 3

    积分
    223
    最后登录
    2019-4-20
    发表于 5 天前 | 显示全部楼层 |阅读模式
    本帖最后由 wbeast 于 2019-4-15 09:32 编辑

    LPC1768只有P0和P2有中断功能,这个两个端口共用中断线3,可以配置上升沿触发或者下降沿触发。什么是上升沿?什么是下降沿?
    上升沿是低电平到高电平的过程。
    下降沿是高电平到低电平的过程
    TIM截图20190415091911.png


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

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

    }
        【03】LPC1768_外部中断实验.rar (245.17 KB, 下载次数: 3)
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 19:44
  • 签到天数: 153 天

    [LV.7]常住居民III

    29

    主题

    1729

    帖子

    63

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    9168
    最后登录
    2019-4-19
    发表于 5 天前 | 显示全部楼层
    楼主旺宝家?刚好正在玩这个板子,哈哈
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    58

    帖子

    0

    金豆

    中级会员

    Rank: 3Rank: 3

    积分
    282
    最后登录
    2019-4-18
    发表于 5 天前 | 显示全部楼层
    回复

    使用道具 举报

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

    本版积分规则

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2019-4-20 21:04 , Processed in 0.107410 second(s), 15 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表