zoukankan      html  css  js  c++  java
  • 【笔记】ARM CortexM0从这里开始

    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)实际工程窗口:

    image

    (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规范

    image

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

    image

    image

    image

    image

    (1)工具链

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

    image

       1: #include <stdint.h>
       2:  
       3: /* define compiler specific symbols */
       4: #if defined ( __CC_ARM   )
       5:   #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */
       6:   #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */
       7:  
       8: #elif defined ( __ICCARM__ )
       9:   #define __ASM           __asm                                       /*!< asm keyword for IAR Compiler          */
      10:   #define __INLINE        inline                                      /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
      11:  
      12: #elif defined   (  __GNUC__  )
      13:   #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
      14:   #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */
      15:  
      16: #elif defined   (  __TASKING__  )
      17:   #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */
      18:   #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */
      19:  
      20: #endif

    (2)中断异常

    • 系统异常 负数
    • 设备异常 从0开始

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

    中断在LPC12xx.h中定义:

    e:\documents\program\gatewayt0928\lpc12xx\lpc12xx.h
       1: typedef enum IRQn
       2: {
       3: /******  Cortex-M0 Processor Exceptions Numbers ***************************************************/
       4:   NonMaskableInt_IRQn           = -14,    /*!< 2 Non Maskable Interrupt                           */
       5:   HardFault_IRQn                = -13,    /*!< 3 Cortex-M0 Hard Fault Interrupt                   */
       6:   SVCall_IRQn                   = -5,     /*!< 11 Cortex-M0 SV Call Interrupt                     */
       7:   PendSV_IRQn                   = -2,     /*!< 14 Cortex-M0 Pend SV Interrupt                     */
       8:   SysTick_IRQn                  = -1,     /*!< 15 Cortex-M0 System Tick Interrupt                 */
       9:  
      10: /******  LPC12xx Specific Interrupt Numbers *******************************************************/
      11:   WAKEUP0_IRQn                  = 0,        /*!< All I/O pins can be used as wakeup source.       */
      12:   WAKEUP1_IRQn                  = 1,        /*!< There are 12 pins in total for LPC12xx           */
  • 相关阅读:
    margin:0 auto; 为什么会失效
    vue 登录滑块验证
    layui table 添加序号列
    纯css :after 菜单后面添加“<”
    设置div为不可点击
    ubuntu中root用户在图形界面登录
    ubuntu root用户无法登录filezilla的问题
    ubuntu无法用putty登录
    解决ubuntu和windows电脑之间无法复制粘贴问题
    E: Unable to locate package ubuntu
  • 原文地址:https://www.cnblogs.com/xilifeng/p/2983731.html
Copyright © 2011-2022 走看看