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

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

/** \brief Set Interrupt Priority

The function sets the priority of an interrupt.

\note The priority cannot be set for every core interrupt.

\param [in] IRQn Interrupt number.
\param [in] priority Priority to set.
*/
__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
  ) {
    SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
    (((priority << ( - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
  else {
    NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
    (((priority << ( - __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文件当中找到,如下所示:

/*
* ==========================================================================
* ---------- Interrupt Number Definition -----------------------------------
* ==========================================================================
*/
typedef enum IRQn
{
/****** Cortex-M0 Processor Exceptions Numbers ***************************************************/
Reset_IRQn = -, /*!< 1 Reset Vector, invoked on Power up and warm reset */
NonMaskableInt_IRQn = -, /*!< 2 Non maskable Interrupt, cannot be stopped or preempted */
HardFault_IRQn = -, /*!< 3 Hard Fault, all classes of Fault */
SVCall_IRQn = -, /*!< 11 System Service Call via SVC instruction */
PendSV_IRQn = -, /*!< 14 Pendable request for system service */
SysTick_IRQn = -, /*!< 15 System Tick Timer */

/****** LPC11Cxx or LPC11xx Specific Interrupt Numbers *******************************************************/
WAKEUP0_IRQn = , /*!< All I/O pins can be used as wakeup source. */
WAKEUP1_IRQn = , /*!< There are 13 pins in total for LPC11xx */
WAKEUP2_IRQn = ,
WAKEUP3_IRQn = ,
WAKEUP4_IRQn = ,
WAKEUP5_IRQn = ,
WAKEUP6_IRQn = ,
WAKEUP7_IRQn = ,
WAKEUP8_IRQn = ,
WAKEUP9_IRQn = ,
WAKEUP10_IRQn = ,
WAKEUP11_IRQn = ,
WAKEUP12_IRQn = ,
CAN_IRQn = , /*!< CAN Interrupt */
SSP1_IRQn = , /*!< SSP1 Interrupt */
I2C_IRQn = , /*!< I2C Interrupt */
TIMER_16_0_IRQn = , /*!< 16-bit Timer0 Interrupt */
TIMER_16_1_IRQn = , /*!< 16-bit Timer1 Interrupt */
TIMER_32_0_IRQn = , /*!< 32-bit Timer0 Interrupt */
TIMER_32_1_IRQn = , /*!< 32-bit Timer1 Interrupt */
SSP0_IRQn = , /*!< SSP0 Interrupt */
UART_IRQn = , /*!< UART Interrupt */
Reserved0_IRQn = , /*!< Reserved Interrupt */
Reserved1_IRQn = ,
ADC_IRQn = , /*!< A/D Converter Interrupt */
WDT_IRQn = , /*!< Watchdog timer Interrupt */
BOD_IRQn = , /*!< Brown Out Detect(BOD) Interrupt */
FMC_IRQn = , /*!< Flash Memory Controller Interrupt */
EINT3_IRQn = , /*!< External Interrupt 3 Interrupt */
EINT2_IRQn = , /*!< External Interrupt 2 Interrupt */
EINT1_IRQn = , /*!< External Interrupt 1 Interrupt */
EINT0_IRQn = , /*!< External Interrupt 0 Interrupt */
} IRQn_Type;

Cortex-M0 LPC1114中断优先级怎么设置的更多相关文章

  1. cortex m0 lpc1114的NVIC中断如何使用

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

  2. 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据

    灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...

  3. 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置

    灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...

  4. 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯

    灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...

  5. cortex m0启动代码详解

    转自:http://www.cnblogs.com/mddblog/p/4920063.html 阅读目录 概述 1.堆栈空间定义 2.存放中断向量表 3. 复位中断函数(Reset_Handler) ...

  6. ARM Cortex M0 程序映像和启动流程

  7. 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置

    摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...

  8. STM32-M0中断优先级介绍

    先解释中断优先级,后面讲代码的实现. 差异:M0的中断优先级相比于M4,没有用到分组,且只用到了2个bit位(即0~3)来设置,数值越小,优先级越高:同等优先级,根据终端号的大小来决定谁先执行. 根据 ...

  9. HC32L110 系列 M0 MCU 的介绍和Win10下DAP-Link, ST-Link, J-Link的烧录

    HC32L110 系列 Cortex M0 MCU Hackaday 在三月份的时候介绍了一款最小的MCU NEW PART DAY: SMALLEST ARM MCU UPROOTS COMPETI ...

随机推荐

  1. HUNNU--湖师大--11409--Skill

    Skill Yasser is an Egyptian coach; he will be organizing a training camp in Jordan. At the end of ca ...

  2. 用 Qt 中的 QDomDocument类 处理 XML 文件(下)

      QDomDocument doc; 1).创建根节点:QDomElement root = doc.documentElement("rootName " ); 2).创建元素 ...

  3. MapReduce优化

    Combiner和Partitioner是用来优化MapReduce的,可以提高MapReduce的运行效率.下面我们来具体学习这两个组件 Combiner 我们以WordCount为例,首先通过下面 ...

  4. 关于jsp web项目中的javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误

    错误: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver org.apache.j ...

  5. git常见指令

    master : 默认开发分支: origin : 默认远程版本库 初始化操作    $ git config -global user.name <name> #设置提交者名字    $ ...

  6. Android之提交数据到服务端方法简单封装

    在Android应用中,除了单机版的应用,其余的应用免不了需要频繁地与服务端进行数据交互,如果每一种方法都独立写一段代码,那会造成代码大量重复,冗余,这不是我们所希望的,所以我们可以对其进行一些封装, ...

  7. c#中使用数据读取器读取查询结果

    今天有时间了. 在看<c#数据库入门经典> ,总结数据读取器查询结果. 针对单个结果集使用读取器,有3中方法: String connString =..; String sql =@&q ...

  8. 那些年,我们一起学WCF--(8)Single实例行为

    Single实例行为,类似于单件设计模式,所有可以客户端共享一个服务实例,这个服务实例是一个全局变量,该实例第一次被调用的时候初始化,到服务器关闭的时候停止. 设置服务为Single实例行为,只要设置 ...

  9. Android Parcelable Trans byte[]

    思路: http://stackoverflow.com/questions/10898116/make-custom-parcelable-containing-byte-array 谢谢, 这位外 ...

  10. 动态树LCT小结

    最开始看动态树不知道找了多少资料,总感觉不能完全理解.但其实理解了就是那么一回事...动态树在某种意思上来说跟树链剖分很相似,都是为了解决序列问题,树链剖分由于树的形态是不变的,所以可以通过预处理节点 ...