要使用LPC1788的外部中断,要进行两部分的操作。由于外部中断的管脚采用I/O复用的形式,显然我们首先要对管脚进行配置,使其工作在外部中断输入的模式。其次,我们需要配置中断相关的寄存器包括中断使能以及中断的触发方式等。
由于我们使用的是外部中断0,查阅数据手册,其GPIO管脚为P2_10,为此我们设置IOCON_P2_10寄存器的FUNC字段,设置成001即为EINT0模式。 配置完引脚后,还需要继续配置具体的中断功能。我们需要打开中断使能,设置ISER相应位;还要配置中断的触发方式如电平触发和边沿触发,相关寄存器为EXTMODE和EXTPOLAR;中断触发以后会将外部中断标志寄存器EXTINT相应位置位,这将会向NVIC提交中断请求,如果管脚中断使能,则会产生中断。中断响应后必须将EXTINT中的该位清零,否则不能产生下一次中断。
中断入口向量的地址在启动文件中定义,对于外部中断0,其标号为EINT0_IRQHandler。开发板上的电路图如图1所示
图1:按键SW6控制GPIO_P2_10的EINT0
按键按下时,GPIO_P2_10是低电平,没有按下为高电平。配置EINT0的中断触发方式为低电平触发,在中断函数中熄灭LED。在主函数中一直点亮。程序的效果为按下SW6,LED灯熄灭。松开则一直保持亮。程序如下:
#define rFIO1DIR (*(volatile unsigned*)0x20098020)
#define rFIO1MASK (*(volatile unsigned*)0x20098030)
#define rFIO1PIN (*(volatile unsigned*)0x20098034)
#define rFIO1SET (*(volatile unsigned*)0x20098038)
#define rFIO1CLR (*(volatile unsigned*)0x2009803c)
#define rIOCON_P2_10 (*(volatile unsigned *)0x4002C128)
#define rIOIntStatus (*(volatile unsigned *)0x40028080)
#define rIO2IntEnF (*(volatile unsigned *)0x400280B4)
#define rIO2IntClr (*(volatile unsigned *)0x400280AC)
#define rEXTINT (*(volatile unsigned *)0x400FC140)
#define rEXTMODE (*(volatile unsigned *)0x400FC148)
#define rEXTPOLAR (*(volatile unsigned *)0x400FC14C)
#define rISER0 (*(volatile unsigned *)0xE000E100)
#define rIRP4 (*(volatile unsigned *)0xE000E410)
void EINT0_IRQHandler()
{
rEXTINT |= (0x1<<0);//中断产生之后必须清除该位
rFIO1PIN |= (1<<18);
}
void GPIO_INIT()
{
rFIO1DIR |= (0x1<<18);//P1.18设置为输出,控制LED
rIOCON_P2_10 = (rIOCON_P2_10&(~0x7))|(0x1<<0);//配置FUNC字段为EINT0模式
}
void EINT_INIT()
{
rEXTMODE &= ~(0x1<<0);//配置成低电平触发
rEXTPOLAR &= ~(0x1<<0);
rISER0 = (0x1<<18);//打开EINT0中断使能
}
int main(void)
{
GPIO_INIT();
EINT_INIT();
while(1)
{
rFIO1PIN &= ~(1<<18);
}
}
void SystemInit (void)
{
}
关键字:Cortex-M3 LPC1788 外部中断操作
引用地址:
Cortex-M3 (NXP LPC1788)之外部中断操作
推荐阅读最新更新时间:2024-03-16 16:18
STM32系列第1篇--初探
Cortex-M3属于ARM V7架构(ARM 7不等于ARM V7) ARM V7 三大系列: A系列 安卓 R系列 实时操作系统 M系列 微控制器 STM32命名规则: 参数: 3个12位AD【多达21个外部测量通道】,转换范围:0~3.6(电源电压) 2个12位DA 12个DMA通道(7+5=12; 7通道DMA1,5通道DMA2) 多达11个定时器 2个I2C接口,5个串口,3个SPI接口,1个CAN2.0,1个USB FS,1个SDIO 下载电路和启动模式: 电脑→USB/串口转换电路(CH340/PL2303)→MCU串口RX TX(PA9和PA10引脚) STM32直接通过两个引脚Bo
[单片机]
富士通发布基于ARM Cortex-M3的FM3系列52款32bit的MCU
富士通半导体(上海)有限公司宣布发布52款采用ARM® Cortex™-M3内核的32bit RISC FM3系列产品,包括MB9A310系列的MB9AF316NBGL以及 MB9A110系列的MB9AF116NBGL等产品。目前,该系列产品已经开始提供样品。 MB9A310和MB9A110系列是高性价比、低功耗产品,主要应用于家电变频器控制、打印机马达控制、复印机等设备。
富士通FM3 系列产品基于长期的以ARM® 为内核的ASIC产品生产以及广受市场认可的32bit FR产品的设计经验再次推出了52款FM3 ARM® Cortex™-M3产品,更加丰富了富士通FM3产品家族,包括高性能、基本产品两大系列96款
[工业控制]
LPC1700系列Cortex-M3内部时钟系统
1、缩略语 osc:oscillator,意为振荡器,晶振。是一种能量转换装置 将直流电能转换为具有一定频率的交流电能。其构成的电路叫振荡电路。 osc_clk:外部晶体振荡器 rtc_clk:real time clock 2. 振荡器 2.1 内部RC振荡器(IRC) 内部RC振荡器(Inner RC),可用作WatchDog的时钟源,也可用作驱动PLL0和CPU的时钟源。IRC的精度达不到USB借口的时间基准精度要求(在使用LPC1700的USB功能时要求使用精度更高的外部晶体振荡器作为系统时钟源)。除此以外,如果CAN波特率高于100Kbit/s,则IRC也不能应用于CAN1/2模块。IRC的标称
[单片机]
基于 ARM Cortex-M3内核的STM32系列处理器解决方案
STM32简单介绍 一、背景 如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位 单片机 有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。 即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度; 存储器 的种类、规模、性能和容 量;以及各种软件获得的难易,我相信
[单片机]
恩智浦推出业界最高性能的ARM Cortex-M3微控制器LPC1800
恩智浦 半导体NXP Semiconductors N.V.日前宣布推出业界最高性能的ARM Cortex-M3 微控制器 。LPC1800的低功耗优化设计使其在极低频率到150Mhz范围内最大发挥Flash或RAM的性能。此性能为大量要求严苛的应用提供了最大的连接和带宽选择。灵活的双单元256位宽Flash 存储器 支持并行读、写操作,可保存“黄金副本”,防止重新编程中出现失误,也可以简单地作为单存储单元使用。LPC1800也支持两种最新外设:灵活四路SPI接口和可配置定时器子系统。
恩智浦半导体副总裁、微控制器产品线总经理Geoff Lees表示,“LPC1800为ARM Cortex-M3微控制器树立了新的性能
[工业控制]
基于STM32L152和S14432的无线网络系统设计
引言 在现代生活和生产中,无线通信技术应用越来越广泛。生活小区、医院、工厂等复杂环境中的各种仪器仪表可以通过无线网络进行数据采集和监控。工业现场自动化数据的控制和采集需要传输距离1km左右、功耗低、简单、可靠、价格低廉的无线通信网络。无线收发芯片S14432的通信距离可达1~2km。本文设计了一种基于STM32L152和S14432的无线网络系统。系统采用低功耗、高性能的Cortex-M3核32位微控制器STM32L152和高集成度、低功耗的无线收发芯片S14432,适用于短距离的现场数据采集和监控。系统采用网络化管理并运用主节点备份技术和LEPS路由协议保证系统的可靠性和拓展性。 1 主控芯片 STM32L152是意法半导
[单片机]
Cortex-M3 (NXP LPC1788)之看门狗定时器对Flash编程的影响
这两天在学习窗口式看门狗模块,之前一直调试的很happy,今天早上突然就进入不了调试模式,而且无法擦除Flash,无法下载程序。郁闷了半天,以为是Keil软件和Ulink出了问题,在另外个电脑上重载,问题依旧。准备用ISP进行尝试,使用FlashMagic软件,进行读取芯片的ID,一直报警autobaud错误,进他提示的网页看下也没有什么有用的信息。 仔细看了数据手册,在Flash存储器章节看到如下信息。引导加载器(boot loader)控制芯片复位后的初始化操作,并提供对Flash存储器进行编程的工具。包括ISP,通过引导加载器软件和UART0串口片上Flash存储器进行编程或在编程。IAP,应用终端用户的应用代
[单片机]
基于Cortex-M3的 STM32微控制器处理先进电机控制方法
变频器的问世和先进的电机控制方法让三相无刷电机(交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。 首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明交流电机时不需要编译
[单片机]