当前位置:首页 > 单片机 > 单片机
[导读]LPC1114的中断,由中断控制模块NVIC控制。一共32个中断,每个中断的优先级可编程为 0~3 四种级别。级别越高对应的优先级越低。因此,级别0 是最高的中断优先级。设置中断优先级的函数,CMISIS已经写好,并嵌入到了编

LPC1114的中断,由中断控制模块NVIC控制。一共32个中断,每个中断的优先级可编程为 0~3 四种级别。级别越高对应的优先级越低。因此,级别0 是最高的中断优先级。

设置中断优先级的函数,CMISIS已经写好,并嵌入到了编译器中,例如,我们用KEIL开发的话,设置中断优先级的函数位于core_cm0.h文件当中,函数如下所示:

/**briefSetInterruptPriorityThefunctionsetsthepriorityofaninterrupt.noteTheprioritycannotbesetforeverycoreinterrupt.param[in]IRQnInterruptnumber.param[in]priorityPrioritytoset.*/__STATIC_INLINEvoidNVIC_SetPriority(IRQn_TypeIRQn,uint32_tpriority){if(IRQn<0){SCB->SHP[_SHP_IDX(IRQn)]=(SCB->SHP[_SHP_IDX(IRQn)]&~(0xFF<<_BIT_SHIFT(IRQn)))|(((priority<<(8-__NVIC_PRIO_BITS))&0xFF)<<_BIT_SHIFT(IRQn));}else{NVIC->IP[_IP_IDX(IRQn)]=(NVIC->IP[_IP_IDX(IRQn)]&~(0xFF<<_BIT_SHIFT(IRQn)))|(((priority<<(8-__NVIC_PRIO_BITS))&0xFF)<<_BIT_SHIFT(IRQn));}}

从上面函数可以看出,该函数有两个参数,IRQn是指你要设置的中断向量,priority是中断优先级,优先级可以是0 1 2 3四个数,0的优先级最大,3的优先级最小。假设你要设置GPIO1中断的优先级最高,那么就是:

NVIC_SetPriority(EINT1_IRQn, 0);

这时,有人会问,”EINT1_IRQn”从哪里来?答:这个可以在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,/*!


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

当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别最高的中断。

关键字: 中断优先级 单片机 中断系统

实现中断允许控制和中断优先级控制分别由特殊功能寄存器区中的中断允许寄存器IE和中断优先级寄存器IP来实现的。下面介绍这两个特殊功能寄存器。

关键字: at89s51 中断优先级 中断允许

中断方式串口接收数据新建一个工程,结构如下图所示:在main.c文件中,输入以下代码:#include “lpc11xx.h”#include “uart.h”uint8_t rec_buf;void UART_IRQH...

关键字: Cortex lpc1114 mo uart 串口中断 收发数据

Cortex-M0 处理器简介  1. Cortex-M0 处理器基于冯诺依曼架构(单总线接口),使用32位精简指令集(RISC),该指令集被称为Thumb指令集。与之前相比,新的指令集增加了几条ARMv6架构的指令,并...

关键字: cortex-m0 技术综述

  Cortex-M0处理器为32位处理器,所以具有最大4G的寻址空间。在体系结构上,存储器空间被划分位一系列的区域,每个区域都有推荐的用途,以提高不同设备间的可移植性。  M0处理器内置了各种不见,例如NVIC和一些调

关键字: cortex-m0 体系结构 存储器系统

中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是:(1)先响应优先级高的中断请求,再响应优先级低的中断请求。(2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。(3)如果同级的多个中断请求同时出现

关键字: 中断优先级 先级处理

LPC_IOCON->R_PIO1_0 &= ~0x07;LPC_IOCON->R_PIO1_0 |= 0x02;上面是设置P1.0为AD1的语句。P1.0低三位是引脚功能选择位,所以配置低三位就可以...

关键字: lpc1114 引脚功能 设置

LPC1114内部一共有4个定时器,2个32位定时器,2个16位定时器,使用方式都一样,只是要注意使用16位定时器时,寄存器的值不要超出65535。给它们分别取名称为CT16B0、CT16B1、CT32B0、CT32B1...

关键字: lpc1114 通用定时器

我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮放大看;)前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_P...

关键字: STM32 中断优先级

一、FreeRTOS中断设置介绍FreeRTOSConfig.h中定义了两个宏,分别是:configKERNEL_INTERRUPT_PRIORITYconfigMAX_SYSCALL_INTERRUPT_PRIORIT...

关键字: freertos STM32 中断优先级
关闭
关闭