当前位置:首页 > 单片机 > 单片机
[导读]LPC1114单片机的NVIC中断函数,有开中断、关中断、设置优先级、挂起等操作函数。这些函数位于core_cm0.h文件里面。比如开中断的函数如下:/**\\briefEnableExternalInterruptThefunctionenablesadevice-specificinter

LPC1114单片机的NVIC中断函数,有开中断、关中断、设置优先级、挂起等操作函数。这些函数位于core_cm0.h文件里面。比如开中断的函数如下:

/**briefEnableExternalInterruptThefunctionenablesadevice-specificinterruptintheNVICinterruptcontroller.param[in]IRQnExternalinterruptnumber.Valuecannotbenegative.*/__STATIC_INLINEvoidNVIC_EnableIRQ(IRQn_TypeIRQn){NVIC->ISER[0]=(1<<((uint32_t)(IRQn)&0x1F));}

/**/里面的注释告诉我们,这是一个中断函数,函数的功能是允许一个中断,也就是开中断的意思。

比如我们要开P1口的中断,可以这样使用这个函数:NVIC_EnableIRQ(EINT1_IRQn);

该函数里面,NVIC_EnableIRQ是函数名,EINT1_IRQn是参数,表示P1口的中断,这个参数可以在头文件lpc11xx.h文件中找到。如下所示:

*==========================================================================*----------InterruptNumberDefinition-----------------------------------*==========================================================================*/typedefenumIRQn{/******Cortex-M0ProcessorExceptionsNumbers******************************/Reset_IRQn=-15,/*!<1ResetVector,invokedonPowerupandwarmreset*/NonMaskableInt_IRQn=-14,/*!<2NonmaskableInterrupt,cannotbestoppedorpreempted*/HardFault_IRQn=-13,/*!<3HardFault,allclassesofFault*/SVCall_IRQn=-5,/*!<11SystemServiceCallviaSVCinstruction*/PendSV_IRQn=-2,/*!<14Pendablerequestforsystemservice*/SysTick_IRQn=-1,/*!<15SystemTickTimer*//******LPC11CxxorLPC11xxSpecificInterruptNumbers*************************/WAKEUP0_IRQn=0,/*!

可以看到,共有32种中断,在使用的时候,你要开什么中断,就用NVIC开中断函数把对应的中断打开。

开了中断以后,中断函数怎么写呢?

例如P1口的中断函数这样写:

voidPIOINT1_IRQHandler(){//进中断以后执行的代码}

为什么P1口的中断函数名称是PIOINT1_IRQHandler,这个其实在startup_lpc11xx.s文件中已经定义好了:

;ExternalInterruptsDCDWAKEUP_IRQHandler;16+0:WakeupPIO0.0DCDWAKEUP_IRQHandler;16+1:WakeupPIO0.1DCDWAKEUP_IRQHandler;16+2:WakeupPIO0.2DCDWAKEUP_IRQHandler;16+3:WakeupPIO0.3DCDWAKEUP_IRQHandler;16+4:WakeupPIO0.4DCDWAKEUP_IRQHandler;16+5:WakeupPIO0.5DCDWAKEUP_IRQHandler;16+6:WakeupPIO0.6DCDWAKEUP_IRQHandler;16+7:WakeupPIO0.7DCDWAKEUP_IRQHandler;16+8:WakeupPIO0.8DCDWAKEUP_IRQHandler;16+9:WakeupPIO0.9DCDWAKEUP_IRQHandler;16+10:WakeupPIO0.10DCDWAKEUP_IRQHandler;16+11:WakeupPIO0.11DCDWAKEUP_IRQHandler;16+12:WakeupPIO1.0DCDCAN_IRQHandler;16+13:CANDCDSSP1_IRQHandler;16+14:SSP1DCDI2C_IRQHandler;16+15:I2CDCDTIMER16_0_IRQHandler;16+16:16-bitCounter-Timer0DCDTIMER16_1_IRQHandler;16+17:16-bitCounter-Timer1DCDTIMER32_0_IRQHandler;16+18:32-bitCounter-Timer0DCDTIMER32_1_IRQHandler;16+19:32-bitCounter-Timer1DCDSSP0_IRQHandler;16+20:SSP0DCDUART_IRQHandler;16+21:UARTDCDUSB_IRQHandler;16+22:USBIRQDCDUSB_FIQHandler;16+24:USBFIQDCDADC_IRQHandler;16+24:A/DConverterDCDWDT_IRQHandler;16+25:WatchdogTimerDCDBOD_IRQHandler;16+26:BrownOutDetectDCDFMC_IRQHandler;16+27:IP2111FlashMemoryControllerDCDPIOINT3_IRQHandler;16+28:PIOINT3DCDPIOINT2_IRQHandler;16+29:PIOINT2DCDPIOINT1_IRQHandler;16+30:PIOINT1DCDPIOINT0_IRQHandler;16+31:PIOINT0

总结:NVIC的函数使用,就是这么简单,KEIL已经给我们写好,我们直接使用即可!


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

中断机制在单片机及嵌入式系统中是重中之重,我们必须深入理解。首先我们要明白一点:CPU执行指令代码,并非一直顺序地逐条执行,而是可能突然跳到某段代码上去的。因为这段代码的优先级更高,或者说它更加紧迫,CPU必须暂时放下手...

关键字: 中断 单片机 嵌入式系统

PIC单片机是基于RISC系统结构的单片机,最初的设计是支持PDP(编程数据处理器)计算机。大量的操作可以用来控制外围设备。PIC单片机比微控制器具有更快的程序执行能力。它是由微芯片技术公司于1889年发明的,是一种8位...

关键字: PIC单片机 定时器 中断

STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等。还支持ISP下载,不用编程器,只要一个MAX2...

关键字: 单片机 看门狗 中断

什么是PIC中断程序呢?形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程...

关键字: PIC 中断 标志位

MCS—51系列单片机内部只需两个外部接中断连源输入端,当外部接连源多于两个时,就必须进行拓宽,下面介绍几种简略的拓宽办法:

关键字: 单片机 软件 中断

最近在浏览星球主题的时候,发现一位球友打卡中断了,就去关心了一下他(瞧我这该死的责任心❤️),结果被他反手就问了下面这个问题。

关键字: 中断 Spring Boot 实战项目

实质上是加一的计数器。外部脉冲让他不断加一,当计数器溢出时,计数器的溢出相应的中断标志位置1,并向CPU发出中断请求。如果定时器/计数器工作为定时模式,则表示时间以到;如果工作于计数模式,则表示计数器、则表示计数值已满。

关键字: 周期 中断

中断的分类和区别

关键字: 轮询 中断

点击“东芝半导体”,马上加入我们哦!对配备以太网与CAN控制器的物联网设备进行优化东芝电子元件及存储装置株式会社(“东芝”)今日宣布,已开始量产M4N组的20款新微控制器。M4N组是TXZ™族高级产品的新成员,采用40n...

关键字: Cortex 东芝 微控制器

在这篇文章中,小编将为大家带来微控制器的相关报道。

关键字: 微控制器 中断 控制器
关闭
关闭