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. Linux下配置SSL (转)

    没有安装apache的情况: 首先安装SSL,再编译安装Apache,再配置证书即可 1.下载apache和openssl 网址:http://www.apache.org http://www.op ...

  2. android 25 跨进程启动activity

    跨进程启动activity,启动系统预定义的activity就是跨进程的. client项目启动server项目的activity. clientActivity.java package com.s ...

  3. 观察者模式-Observer

    观察者模式很好理解,简单来说就是:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系. 1. 自己手工创建Observer模式 首先,创建观察者接口: pub ...

  4. Java——(二)Java集合容器

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.基本概念 1)Collection:一个独立元素的序列,这些元素都服从一条或多条规则.Lis ...

  5. SQL查询显示行号、随机查询、取指定行数据

    转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ...

  6. 【css面试题】三个DIV要求水平对齐,左右两个DIV宽度固定为100px,中间那个DIV充满剩余的宽度(至少2种方法)

    这是我在一家公司面试时遇到的问题,当时没有答上来!! 所以看到的小伙伴一定要注意了!! 变化浏览器宽度可看到效果: 左 右 中 然后我们来看看代码: 第一种方法:(浮动) <style type ...

  7. Http,Https (SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2 英文帮助文档 分类: ASP.NET 2014-10-28 10:50 147人阅读 评论(1) 收藏

    Security Switch 4.2 =================== Security Switch enables various ASP.NET applications to auto ...

  8. [O] SQLite数据库报错:no such column

    在SQLite数据库创建语句增加列,运行后报错:no such column 在语法规范的前提下,即 //SQLite数据库创建,逗号与空格须严格 String CREATE_NOTE = " ...

  9. 使用Sqlite数据库存储数据

    1.Sql基本命令 1.1.创建表 表是有行和列组成的,列称为字段,行称为记录. 使用CREATE命令来创建表: 1 CREATE TABLE tab_student (studentId INTEG ...

  10. IsPostBack and DropdownList.

    Encounted the issue accident when helping my classmate dealing with his homework assignment,it turns ...