LPC1768外部中断与GPIO中断

LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明

 

控制这四个外部中断靠以下寄存器

 

这三个寄存器的0 1 2 3位分别代表中断的0 1 2 3,EXTINT寄存器表示中断是否发生,在发生中断的时候该寄存器会置位,可以通过写1清零,EXTMODE寄存器表示触发模式,有电平触发和变化沿触发两种,EXTPOLAR与EXTMODE,在电平触发模式下,决定高电平还是低电平触发,在变化沿触发的情况下决定上升沿还是下降沿触发

这三个中断分别相关的引脚为 EINT0—P2.10   EINT1—P2.11  EINT2—P2.12  EINT3—P2.13,

使用这三个引脚作为中断的方法如下.

   首先初始化相应的引脚,选择中断功能,然后配置中断触发方式,最后打开nvic中断许可,这就完成了初始化,然后便是中断响应程序,在中断响应程序中先清除extint中的中断标志,然后清除nvic中断挂起,接着做自己的事情,完整的流程就OK了,示例代码如下:

  static void Eint1Init(EINTMODE eintMode,EINTLOGIC eintLogic,PREEMPTPRIORITY PreemptPriority,SUBPRIORITY SubPriority)

{

    u8 i = 0;

    LPC_PINCON->PINSEL4 &= ~(0X03L<<22);

    LPC_PINCON->PINSEL4 |= (0X01L<<22);//设置IO口功能为EINT1

    if(eintMode)LPC_SC->EXTMODE |= 1<<

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LPC1768是一款基于ARM Cortex-M3内核的微控制器,拥有丰富的GPIO资源和中断控制功能。使用LPC1768控制四位数码管可以通过以下步骤实现: 1. 确定数码管接口 LPC1768的GPIO口数量较多,可以选择其中四个口作为数码管的控制口,分别控制数码管的四个数码位。例如,可以将P0.0~P0.3口与数码管的A~D位相连。 2. 配置GPIO口 使用LPC1768的GPIO口需要先将其配置为输出模式。可以使用LPC1768的GPIO库函数来进行配置,例如: LPC_GPIO0->FIODIR |= (1<<0)|(1<<1)|(1<<2)|(1<<3); //将P0.0~P0.3口设置为输出模式 3. 中断控制 为了控制数码管的显示,需要定时更新数码管的显示数据。可以使用LPC1768的定时器中断来实现定时更新,例如: //初始化定时器1 LPC_TIM1->PR = 0; //设置预分频系数为1 LPC_TIM1->MR0 = 100000; //设置计数器最大值为100000 LPC_TIM1->MCR = (1<<0)|(1<<1); //设置计数器为重载模式,并清除计数器 LPC_TIM1->TCR = (1<<1); //复位定时器计数器 LPC_TIM1->TCR &= ~(1<<1); //停止计数器 //配置中断 NVIC_EnableIRQ(TIMER1_IRQn); //使能定时器1中断 //定时器1中断处理函数 void TIMER1_IRQHandler(void) { //更新数码管显示数据 ... //清除中断标志位 LPC_TIM1->IR |= (1<<0); } 4. 数码管显示数据更新 在定时器中断处理函数中,需要更新数码管的显示数据。可以使用LPC1768的GPIO库函数来控制GPIO口输出高低电平,从而控制数码管的亮灭。例如: //更新数码管显示数据函数 void update_display(void) { static uint8_t digit = 0; //当前显示的数码位 static uint8_t data[4] = {0}; //数码管显示数据 //更新数码管显示数据 data[0] = ...; data[1] = ...; data[2] = ...; data[3] = ...; //控制数码管显示 LPC_GPIO0->FIOCLR = (1<<0)|(1<<1)|(1<<2)|(1<<3); //清除所有数码位的输出 LPC_GPIO0->FIOSET = (1<<digit); //设置当前数码位的输出 LPC_GPIO1->FIOPIN = (data[digit]<<16); //设置当前数码位的输出数据 //更新数码位 digit++; if(digit >= 4) { digit = 0; } } 5. 完整代码 下面是一个简单的LPC1768控制四位数码管的示例代码:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值