历史上的今天
今天是:2024年12月11日(星期三)
2018年12月11日 | Cortex-M0 LPC11C14中断控制器
2018-12-11 来源:eefocus
LPC11C14(Cortex-M0)微控制器采用的是NVIC(Nested Vectored InterruptController)中断控制器
NVIC中断控制器有一下特点:
NVIC是ARM Cortex-M0的一个集成部分
紧耦合的方式中断延迟低
可控制系统的异常及外设中断
NVIC中断控制器支持32个中断源
4个带硬件优先级屏蔽的可编程中断优先级
可以产生软中断
根据NVIC的特点,我们能够知道,采用紧耦合的方式比普通的中断向量方式相应更快。如何实现紧耦合的中断方式,我们需要看看NVIC的相关信息。
查看LPC11C14的用户手册,对于中断控制器的中断源有如下描述

当产生外部中断时,中断源由NVIC处理后再递交给Cortex-M0内核处理。
中断源如下表所示:





从表中可以看到NVIC支持的32个外部中断源。
LPC11C14中断优先级如下所示


下图所示的是LPC11C14的中断向量表,由于采用的是紧耦合的中断方式,所以对应的地址和中断源的ISR地址已经在向量表中确定下来,当有中断产生时,可以根据向量表中ISR地址直接跳到ISR中做相应的中断处理。

我们在Cortex-M0启动的时候,需要对其中断向量表进行初始化。根据手册上面的向量表图,我们依次填入每个中断源的ISR地址(也就是中断服务函数名)
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WAKEUP_IRQHandler ; 15 wakeup sources for all the
DCD WAKEUP_IRQHandler ; I/O pins starting from PIO0 (0:11)
DCD WAKEUP_IRQHandler ; all 40 are routed to the same ISR
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler
DCD WAKEUP_IRQHandler ; PIO1 (0:11)
DCD CAN_IRQHandler ; CAN
DCD SSP1_IRQHandler ; SSP1
DCD I2C_IRQHandler ; I2C
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
DCD TIMER16_1_IRQHandler ; 16-bit Timer1
DCD TIMER32_0_IRQHandler ; 32-bit Timer0
DCD TIMER32_1_IRQHandler ; 32-bit Timer1
DCD SSP0_IRQHandler ; SSP0
DCD UART_IRQHandler ; UART
DCD USB_IRQHandler ; USB IRQ
DCD USB_FIQHandler ; USB FIQ
DCD ADC_IRQHandler ; A/D Converter
DCD WDT_IRQHandler ; Watchdog timer
DCD BOD_IRQHandler ; Brown Out Detect
DCD FMC_IRQHandler ; IP2111 Flash Memory Controller
DCD PIOINT3_IRQHandler ; PIO INT3
DCD PIOINT2_IRQHandler ; PIO INT2
DCD PIOINT1_IRQHandler ; PIO INT1
DCD PIOINT0_IRQHandler ; PIO INT0
史海拾趣
|
继成功推出一系列Green model AC-DC PWM电源控制IC后,昂宝电子目前又推出一系列CCFL控制器IC,可广泛用于LCD监视器、LCD-TV、笔记本电脑以及工业设备、汽车、手持设备中的液晶显示器。 目前昂宝电子所推出CCFL控制器IC产品包括:OB3316/OB3316 ...… 查看全部问答> |
|
本文介绍了uC/GUI 的组织结构, PROTEUS 仿真环境, 以及在PROTEUS 仿真环境下实现uC/GUI 移植到MCS51 系列单片机P89C51RD2 的过程; 并且对移植过程中涉及到的修正C51 调用树和代码优化等问题进行了简明阐述。… 查看全部问答> |
|
一个LED的N种玩法(五)----WatchDog Timer 一个LED的N种玩法(五)--WatchDog Timer Author: chenzhufly Email: chenzhufly@126.com 2010-05-02 一.WatchDog Timer 概述 看门狗的目的是当进入错误状态一定时间后复位微控制器。当看门狗使能时,如果用户没有在一定时间内喂狗(看门狗定时 ...… 查看全部问答> |
|
eboot显示一个 logo, 但进去系统的中间黑屏,我想继续在 oal中显示 logo, 去掉lcd初始化函数调用, 可看 OEMInit 函数,没见 初始化LCD部分代码, OEMInit 上下文周围也没找到 初始LCD有关的函数. 麻烦给个提示,谢谢 平台是 PXA270+WINCE6.0… 查看全部问答> |
|
java 调用DLL 读串口,不久就死了,请帮忙看看什么原因? 经过仔细分析问题出这dll这里,但始终找不到解决办法,请大家帮忙看看,谢谢! dll代码如下: JNIEXPORT jstring JNICALL Java_getGPS (JNIEnv * env, jobject obj) { char * cIpAddress =compressWideChar((LPCWSTR)L\"empty value! ...… 查看全部问答> |
|
我现在正在弄EBOOT启动(用网络下载NK.BIN), 有几个问题想请教一下,希望各位帮帮忙,多谢 1.PB中本来有提供eboot.bin,我需要再重新编译吗? 2.Target ->ConnectivityOptions里面应该怎么设? 3.除了这两个地方,还有哪里需要注意的. 感激!(我没分了 ...… 查看全部问答> |
|
关于格式转换函数sprintf(): 我想用sprintf()函数将一个usigned int型变量转换为字符串从串口发送出去 结果调用的时候发现不对 我先定义DeocdeNum=2000;UCHAR *CH 保存转换后的字符串 printf(ch,\"%d\",DeocdeNum); 结果我发现在程序中 Deoc ...… 查看全部问答> |




