LPC1768的P0口和P2口既能做输入输出,还可以配置为中断源。
现在P2.10作为按键,配置如下:
void BUTTON_init(void)
{
LPC_GPIO2->FIODIR &=~(1 << 10); /* PORT2.10 definedas input */
LPC_GPIOINT->IO2IntEnF |= (1<< 10); /* enable falling edgeirq */
NVIC_EnableIRQ(EINT3_IRQn); /* enable irq in nvic */
}
void EINT3_IRQHandler()
{
LPC_GPIOINT->IO2IntClr |= (1 << 10); /* clear pending interrupt */
LED_ON;
Dealy(1000);
LED_OFF;
}
EINT3和GPIO中断共用,所以按一下按键直接进入EINT3的中断服务程序里。
而lpc1768有4个外部中断输入,为P2.10~P2.13,同样取P2.10作为按键
void EINTInit( void )
{
LPC_PINCON->PINSEL4 = 0x00100000; /*set P2.10 as EINT0 and
P2.0~7GPIO output */
LPC_GPIO2->FIODIR = 0x000000FF; /*port 2, bit 0~7 only */
LPC_GPIO2->FIOCLR = 0x000000FF; /*turn off LEDs */
LPC_SC->EXTMODE = EINT0_EDGE; /* INT0 edge trigger */
LPC_SC->EXTPOLAR = 0; /* INT0 is falling edge by default */
NVIC_EnableIRQ(EINT0_IRQn);
return( TRUE );
}
void EINT0_IRQHandler (void)
{
LPC_SC->EXTINT = EINT0; /* clear interrupt */ //EINT0==0x10
LED_ON;
Dealy(1000);
LED_OFF;
}
关键字:LPC1768 GPIO 外部中断
引用地址:
LPC1768菜鸟学习之GPIO和外部中断
推荐阅读最新更新时间:2024-03-16 16:07
STM32总结之GPIO 常用库函数
配置相关函数 1.void GPIO_Init (GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct) 函数解释:GPIO的初始化函数,该函数的作用是对io进行初始化。 参数: (1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。 (2)GPIO_InitStruct,GPIO的初始化相关结构体。该结构体里的成员变量决定了我们具体的初始化参数。以下进行说明: GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。 GPIO_Mode:指定GPIO的模式,有八种模式: GPIO_
[单片机]
基于STM32单片机通过GPIO输出点亮LED灯
一. GPIO初始化 STM32单片机和51单片机不同,51单片机只需与引脚相连后就可以使用引脚发出高低电平信号控制外部器件,而STM32单片机需要先对引脚进行配置(初始化),如果使用引脚用作I2C、SPI、USART等通讯接口时,就是所谓的复用功能时,就需要再配置外设的工作参数。 1.使能GPIO端口时钟; RCC_APBxPeriphClockCmd(RCC_APBxPeriph_GPIOy , ENANLE/DISABLE); 函数表示使能或者不使能APBx(Advanced Peripheral Bus)的外设时钟,APBx表示时钟总线APB1或APB2,APB1为低速的外设时钟(最大为36MHz),APB2
[单片机]
STM32外部中断的关闭和打开
注:库函数没有现成的函数打开和关闭外部中断 在某些时候我们希望暂时的关闭某条外部中断,以免造成误触发,此时可以使用下面的操作: 关闭: EXTI- IMR &= ~(EXTI_Linex); 开启: EXTI- IMR |= EXTI_Linex; 其中EXTI_Linex为指定的中断线。 原理可以参考《STM32参考手册》 中断屏蔽寄存器处。
[单片机]
关于GPIO实现RS485/422通信的研究
1.引言
工程实践中,对于解决同一个问题,我们常面临两种选择:要么硬件简单软件复杂,要么软件复杂硬件简单。如某引信系统的DSP电路,需要与内部两个组部件以及外部多个系统进行接口或者信息交互,且总体要求采用异步串口方式进行通信。此类问题主要有三种解决方案:第一,在DSP的并行总线上扩展UART芯片,通过硬件转换实现,软件最简单;第二,在DSP的McBSP串行总线上扩展UART芯片,软件有一定的复杂度;第三,不扩展其他硬件直接利用IO引脚通过软件控制实现,该方法软件最复杂。根据以往文献可知在硬件资源允许的前提下,前两种方法已经得到了广泛的研究。
然而在产品的研制过程中,常出现引信硬件资源紧张的情况,无法扩展满足需求的UART,只
[嵌入式]
STM32_外部中断之按键控制点亮LED灯
/* 名称:STM32_外部中断之按键控制点亮LED灯 说明:对于STM32来说,其中断种类众多。(除了外部中断还有内部异常)其每个GPIO端口的引脚都可以作为外部中断的中断源。 对其的设置也比C51要复杂的多。对于具体的使用来说可以总结为以下步骤: 1.初始化作为外部中断源的GPIO口。和普通的GPIO的设置类似,不过由于是使用GPIO引脚作为中断源,所以还需要开启复用时钟。 2..配置中断控制器 NVIC。由于有很多的中断,所以STM32用NVIC来控制操作各种中断。配置NVIC主要是配置一些中断源,中断的优先级(包括抢占优先级和相应优先级)还有设置使能中断(类似于C51中开启总开关)。 3..配置中断线EXIT线,是
[单片机]
STM32F4——NVIC中断优先级及外部中断
NVIC中断优先级 一、简介: CM4内核可以支持256个中断,包括16个内核中断和240个外部中断,256级的可编程中断设置。对于STM32F4没有用到CM4内核的所有东西,只是用到了一部分,对于STM32F40和41系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断。 二、相关寄存器: ISER 中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82个可屏蔽的中断,因此利用ISER 这三个32位寄存器就够了。一下的几个寄存器同理。 ICER 中断除能寄存器组,用来消除中断。 ISPR 中断挂起控制寄存器组,用来挂起中断。 ICPR 中断解挂
[单片机]
51单片机入门教程(6)——外部中断
一、外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了。(传送门:51单片机入门教程(5)——定时器中断) 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 51单片机的中断源优先级与向量号如下表: 中断源 优先级 中断向量号 INT0 – 外部中断0 最高 0 T0 – 定时器/计数器0中断 第2 1 INT1 – 外部中断1 第3 2 T1 – 定时器/计数器1中断 第4 3 串口中断 第5 4 T2 – 定时器/计数器2中断 最低 5 1.2 外部中断 除了定时器中断外,51单片机还有两个外部中断源
[单片机]
AM335x(TQ335x)学习笔记——GPIO按键驱动移植
还是按照S5PV210的学习顺序来,我们首先解决按键问题。TQ335x有六个用户按键,分别是上、下、左、右、Enter和ESC。开始我想到的是跟学习S5PV210时一样,编写输入子系统驱动解决按键问题,但是浏览driver/input/keyboard目录时意外的发现了gpio-keys.c,大体上看下该驱动程序,其功能是实现了通用的gpio按键。再去看了下DTS,发现DTS中有对gpio-keys的引用,于是猜到,新的内核不需要自己编写输入子系统驱动,可以通过配置DTS直接解决按键问题。本人最终通过实验证实了这个猜想,下面是实验笔记及本人的一些理解。 (1)确定GPIO管脚 通过查看TQ335x的原理图可以看到,TQ335x的6
[单片机]