您的位置:首页 > 其它

【笔记】ARM Cortex-M0从这里开始

2013-03-26 23:40 459 查看
page 标注书本

pdf 标注(E:\kpan\Desktop\LPC\LPC1200_um_en.pdf )

page21

1.AHB Home Address Block,内部地址块

2.CC2530 f256 f256的意思是Flash配置为256KB.

 

page29

1.NVIC(Nested Vectored Interrupt Controller 嵌套矢量中断控制器

 

pdf8

1. Fig 2. LPC122x memory map 内存映射关系.

2013年3月26日 23:56:24

http://www.zlgmcu.com/nxp/lpc1000/lpc1200.asp周立功单片机

LPC12XX系列ARM特性

LPC1200系列ARM是基于Cortex-M0内核的微控制器,具有高集成度和低功耗等特性,可用于嵌入式应用。Cortex-M0是第二代ARM内核,它可为系统提供更高的性能,如增强的调试特性和更高密度的集成。基于Cortex-M0的优势,LPC1200可在相似应用中实现更低的平均功耗。

LPC1200系列Cortex-M0微控制器可在高达45MHz的CPU频率下运行,包含高达128KB片内Flash存储器和8KB数据存储器。较小的512字节Flash擦除扇区带来了多种设计上的好处,如更精细的EEPROM仿真,支持从任意串行接口启动加载,减少了对RAM缓存容量的要求,从而为现场编程带来便利。

LPC1200系列Cortex-M0微控制器的外设组件包括一个10位ADC(8通道)、两个带有输出反馈的模拟比较器、两个UART接口、一个SSP/SPI接口、一个带有快速模式的I2C接口、一个看门狗定时器、一个DMA控制器、一个CRC计算及校验模块、四个通用定时器、一个32位RTC和多达55个通用I/O引脚。

LPC12D00系列Cortex-M0微控制器:LPC12D27可驱动静态或复合LCD(高达4个背极和40段)可以很容易的级联多个LCD驱动器,最多驱动2560段,可应用在大型显示场合。

特性 处理器内核 ARM Cortex-M0内核,运行速度高达45MHz
内置嵌套向量中断控制器(NVIC)
SWD调试接口
系统节拍定时器

片内存储器 高达8kB SRAM
高达128kB片内Flash存储器
可通过片内引导装载程序软件实现在系统编程(ISP)和在应用编程(IAP)功能

时钟产生单元 晶体振荡器工作频率1MHz~25MHz
12MHz的内部RC振荡器精度为1%,可选择作为系统时钟
PLL允许CPU在最大CPU速率下工作,而无需高频晶振,可从主振荡器、内部RC振荡器或看门狗振荡器运行
时钟输出功能可反映主振荡器时钟、IRC时钟、CPU时钟和看门狗时钟
实时时钟(RTC)

电源 3.3V单电源供电(2.0V~3.6V)
具有三种低功耗模式:睡眠模式、深度睡眠模式和深度掉电模式
12个拥有专用中断的GPIO可将CPU从深度睡眠模式中唤醒
掉电检测带三个独立阈值,每个阈值都可用于中断和强制复位
上电复位(POR)
集成了PMU(电源管理单元),可在睡眠、深度睡眠和深度掉电模式中极大限度地减少功耗

数字外设 21通道Micro DMA控制器
硬件CRC计算及校验模块
两个带有小数波特率发生器和内部FIFO的UART。其中UART0带RS-485并支持调制解调器,UART1为带IrDA的标准UART
SSP控制器,带FIFO和多协议功能
I2C总线接口,完全支持I2C总线规范和快速模式Plus,数据速率为1Mbit/s,具有多地址识别功能和监控模式
4个可编程的大驱动电流(16mA)引脚
多达55个通用I/O(GPIO)引脚,可编程为上拉、开漏模式,可编程的数字输入干扰滤波
GPIO均可配置为边沿或者电平中断
四个通用定时/计数器,带有四个捕获输入和四个匹配输出(32位计时器)或两个捕获输入和两个匹配输出(16位计时器)
窗看门狗定时器
4×40段LCD驱动(LPC12D27)

模拟外设 一个8通道10位ADC
两个高度灵活的模拟比较器,模拟比较器的输出可以编程为定时器的匹配信号,也可模拟555定时器

封装 LQFP100、LQFP64和LQFP48封装

page50

1.工程建立和编程规范

(1) 文件存储管理

*System

*source

*project

*out

*GPIO

*DOC

*Core

(2)实际工程窗口:





(3)代码分类

H头文件:引脚定义,宏定义,全局变量,内部函数,外部函数.
C文件中:尽量与硬件无关,只存放变量和代码
变量的定义:使用宏或者是typedef
(4)编程规范

注释://行后单行注释,/**/多行注释
文件头:a.文件名 b.版本. c参数 d.使用的工具 e.描述信息
函数头格式: 函数名 描述 参数 返回值
文件结束
变量命名
预编译 a宏定义 b数据类型typedef c条件编译

page57

1.CMSIS

    ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard)

2.CMSIS分层

核心外设访问层CPAL Core Peripheral Acess Layer
定义内部寄存器地址,功能函数(内部寄存器,NVIC,调试子系统的访问)

中间件访问层MWAL Middleware Acess Layer
通用API

设备访问层 DPAL Device Peripheral Acess Layer
定义 硬件寄存器的地址,对外设的访问函数,

3.CMSIS规范





stdin.h 包含了对8,16,32位等数据的指示符定义,用来屏蔽不同编译器的差异
core_cm0.h和core_cm0.c 包含了Cortex-Mx的全局变量的声明和 定义了一些静态功能函数
system_LPC12xx.h和system_LPC12xx.c 定义的是 系统初始化函数
系统时钟的定义
时钟变量















 

(1)工具链

CMSIS支持三大主流工具链:MDK,IAR,CNU,在core_cm0.c中的定义来屏蔽一些编译器的内置的关键字的差异:





[code] #include <stdint.h>


 


/* define compiler specific symbols */


#if defined ( __CC_ARM   )


#define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */


#define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */


 


#elif defined ( __ICCARM__ )


#define __ASM           __asm                                       /*!< asm keyword for IAR Compiler          */


#define __INLINE        inline                                      /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */


 


#elif defined   (  __GNUC__  )


#define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */


#define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */


 


#elif defined   (  __TASKING__  )


#define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */


#define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */


 


#endif

[/code]

(2)中断异常

系统异常 负数

设备异常 从0开始

异常和中断标识符必须加上后缀_IRQn

中断在LPC12xx.h中定义:

e:\documents\program\gatewayt0928\lpc12xx\lpc12xx.h

 

[code]
[code] typedef enum IRQn


{


/******  Cortex-M0 Processor Exceptions Numbers ***************************************************/


NonMaskableInt_IRQn           = -14,    /*!< 2 Non Maskable Interrupt                           */


HardFault_IRQn                = -13,    /*!< 3 Cortex-M0 Hard Fault Interrupt                   */


SVCall_IRQn                   = -5,     /*!< 11 Cortex-M0 SV Call Interrupt                     */


PendSV_IRQn                   = -2,     /*!< 14 Cortex-M0 Pend SV Interrupt                     */


SysTick_IRQn                  = -1,     /*!< 15 Cortex-M0 System Tick Interrupt                 */


 


/******  LPC12xx Specific Interrupt Numbers *******************************************************/


WAKEUP0_IRQn                  = 0,        /*!< All I/O pins can be used as wakeup source.       */


WAKEUP1_IRQn                  = 1,        /*!< There are 12 pins in total for LPC12xx           */

[/code]
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: