PAGE1
PAGE1
LPC1100系列的ARMCortex-M0内核
ARMCortex-M0内核概述
ARMCortex-M0内核是ARM公司设计的一种低功耗、低成本的32位RISC处理器内核。它主要用于嵌入式系统,尤其是对成本和功耗有严格要求的应用,如传感器节点、小型控制设备等。LPC1100系列单片机采用了ARMCortex-M0内核,这使得LPC1100系列在性能和功耗之间取得了很好的平衡。
内核架构
ARMCortex-M0内核采用哈佛架构,具有独立的指令和数据总线。这种架构使得指令和数据可以同时读取,从而提高了处理器的效率。Cortex-M0内核具有以下特点:
32位架构:提供32位的通用寄存器和32位的地址空间。
Thumb指令集:使用16位的Thumb指令集,兼顾了性能和代码密度。
低功耗:功耗非常低,适合电池供电的应用。
小尺寸:内核尺寸小,适合低成本的嵌入式系统。
中断响应快速:具有快速中断响应机制,适合实时应用。
内核寄存器
ARMCortex-M0内核具有16个32位寄存器,这些寄存器可以分为以下几类:
通用寄存器:R0到R12,用于存储数据和地址。
程序计数器(PC):R15,用于存储下一条指令的地址。
链接寄存器(LR):R14,用于存储子程序返回地址。
状态寄存器(PSR):包括程序状态寄存器(APSR)、控制状态寄存器(CPSR)和执行状态寄存器(EPSR)。
堆栈指针(SP):R13,用于存储堆栈的顶端地址。
内核中断处理
ARMCortex-M0内核具有一个嵌套向量中断控制器(NVIC),用于管理和响应中断。NVIC支持多个中断源,并且可以优先级排序。当多个中断同时发生时,NVIC会根据优先级选择优先处理的中断。
中断向量表
中断向量表是NVIC的一部分,用于存储中断处理程序的地址。在LPC1100系列单片机中,中断向量表通常位于Flash的起始地址。每个中断向量表项包含一个32位的地址,指向相应的中断处理函数。
//中断向量表示例
__attribute__((section(.isr_vector)))
void(*constg_pfnVectors[])(void)={
(void(*)())(__stack),//StackPointer
ResetISR,//ResetHandler
NMI_Handler,//NMIHandler
HardFault_Handler,//HardFaultHandler
MemManage_Handler,//MemoryManagementHandler
BusFault_Handler,//BusFaultHandler
UsageFault_Handler,//UsageFaultHandler
0,//Reserved
0,//Reserved
0,//Reserved
0,//Reserved
SVC_Handler,//SystemServiceCallHandler
DebugMon_Handler,//DebugMonitorHandler
0,//Reserved
PendSV_Handler,//PendableServiceCallHandler
SysTick_Handler,//SystemTickTimerHandler
//外部中断处理函数
GPIO_IRQHandler,//GP