ARM学习笔记--基于LPC1700系列._第1页
ARM学习笔记--基于LPC1700系列._第2页
免费预览已结束,剩余34页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、201139 很想正式地,系统地学习 ARM,从今天开始做笔记一,ARM 寄存器介绍我认为要学习 ARM,先要了解 ARM 体系结构及 ARM 汇编指令集,所以首先来学 习ARM 体系结构。DMA Direct Memory Access (存储器直接访问)。这是指一种高速的数据传输操作,允许在外部 设备和存储器之间直接读写数据,既不通过CPU,也不需要 CPU 干预。整个数据传输操作在一个称为DMA 控制器的控制下进行的。CPU 除了在数据传输开始和结束时做一 点处理外,在传输过程中 CPU 可以进行其他的工作。这样,在大部分时间里, CPU 和输入输出都处于并行操作。因此,使整个计算机系统

2、的效率大大提高。体系结构:ARM 由 32 位 ALU 单元,若干个 32 位通用寄存器以及状态寄存器, 32*8位乘法器,32*32 位桶形移位寄存器,指令译码以及控制逻辑,指令流水线和 地址数据寄存器组成 寄存器介绍:ARM 处理器共有 37 个寄存器,其中包括:31 个通用寄存器,包括程序计数器 PC 在内。这些寄存器都是 32 位的。6 个状态寄存器,这些寄存器都是 32 位的,但是目前只是用了其中 12 位ARM 处理器共有 7 种不同的处理器模式,每种模式对应相应的一组寄存器组。任 意时刻可见的寄存器包括 15 个通用寄存器 R0-R14, 一个或两个状态寄存器及程序 计数器PC。

3、在所有的模式中,有些的模式共用同一个物理寄存器,有些模式拥有 自己独立的寄存器,详见表 1-4(ARM 体系结构与编程)AW*舱遼每莒er科鲂豐鸣乔巴用户舷(Mr.通=斷權才:床Q.眄阳遇砂中理豐武mi软軒丰I帥皿访| 已:dh齐擁R萍曲早沪通用寄存器:可以分为三大类未备份寄存器 R0-R7;备份寄存器 R8-R14;程序计数器 R15.未备份寄存器在所有模式下指的是同一物理地址所有模式都包含这些寄存器。在异 常中断造成处理器模式转换时,由于不同处理器模式使用的是相同的物理地址,可 能造成寄存器中数据被破坏。这些寄存器没有被系统用作特别用途,任何采用通用 寄存器的场合都可以使用未备份寄存器对于

4、备份寄存器 R8-R12 来说,每个寄存器对应两个物理地址,对于R13, R14 来说每个寄存器都有 6 个不同的物理地址,其中的一个是用户模式和系统模式公用 的,另外五个对应其他 5 种模式,采用下面几号来区分:R13_可以是usr/svc,abt,u nd,irq,fiqR13 常做栈指针,常用每一种一场模式都有自己的物理 R13,应用程序初始化该 R13,使其指向该异常模 式的专用的栈地址。R14 又被称为连接寄存器,LR,在 ARM 体系中有两种用途每种模式自己的物理 R14 都存放当前子程序的返回地址,当通过 BLBLX 来调用 子程序时,R14 被设置成该子程序的返回地址。在子程序

5、中当把R14 的值送入 PC中时子程序立即返回可以通过以下两种方法实现子程序返回1. M0V PC,LRBX LR2. 在子程序入口使用下面指令将 PC 保存到栈中:STMFD SP!,丄 R相应地,下面指令可以实现子程序返回;LDMFD SP!, ,PC当异常中断发生时,该异常模式特定的物理地址R14 被设置成该异常模式将要返回的地址R14 也可以做位通用寄存器来使用程序计数器 R15 又被记做 PC当正确读取 R15 的值以后改制为当前指令地址值加 8 个字节,也就是说,对于 ARM 指令集来说,PC 指向当前指令的下两条指令的地址。由于 ARM 指令是字对 齐的,pc 的第 0 位和第

6、1 位总为 0对于 ARM 的高版本来说程序必须保证写入 R15 的 bit1:0为 0b00,否则出错。对于 THUMB 指令是半字对齐的MOV PC,PC;程序将跳转到当前指令下面第二条指令执行程序状态寄存器:CPSR(当前程序状态寄存器)可以在任何模式下被访问,每种 模式下都有一个专用的物理状态标志寄存器称为SPSR (备份程序状态寄存器)。当特定的异常中断发生时这个寄存器用于存放当前程序状态寄存器的内容。在异常 中断退出时可以用 SPSR 中保存的值来恢复 CPSR由于用户模式和系统模式没有异常中断所以他们没有SPSRCPSR 格式如下:31 30 29 28 27 26 7 6 5

7、4 3 2 1 0N Z CV Q DNM(RAZI1. 条件标志位 N (Negative)、Z( Zero)、C (Carry)、V ( Overflow )统称为标 志位。大部分的 ARMARM 指令可以根据 CPSRCPSR 中的这些条件标志位来选择性地执行。各条件标志位的具体含义如下:N:当两个补码表示的有符号整数运算时,N = 1 表示运算的结果为负数;N = 0 表示运算结果为正数或零;Z: Z= 1 表示运算结果为零;Z = 0 表示运算的结果不为零;C:在加法指令中,当结果产生了进位,则 C= 1;其他情况下 C = 0;在减法指令中,当运算中发生借位,则 c=0;其他情况下

8、 C=0;V:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数 时,V =1 表示符号位溢出2. Q标志位 CPSR用于指示增强的 DSP指令是否发生了溢出,SPSR用于异常中断发 生时保存和恢复 CPSR 的 Q 标志位3. CPSR 的控制位:CPSRCPSR 的低 8 8 位称为控制位,当异常中断发生时这些位发生改变。在特权模式下,软件可以修改这些控制位:I :普通中断禁止位;1 = 1 时禁止 IRQ 中断。F:快速中断禁止位;F = 1 时禁止 FIQ 中断。T:对于 ARMv4 以及更高的版本的 T 系列的 ARM 处理器lT= 0 表示执行 ARM 指令lT=

9、 1 表示执行 Thumb 指令对于 ARMv5 以及更高版本的非 T 系列的 ARM 处理器F T M4 M3 M2 M1 M0T=0 表示执行 ARM 指令T= 1 表示强制下一条执行的指令产生为定义指令中断M 控制位:控制处理器模式M4:0处理器模式OblOOOO User0b10001 FIQOb1OO1O IRQ0b10011 Supervisor0b10111 Abort0b11011 Un defi ned可访问的寄存器PC,R14-R0,CPSRPC,R14_fiq-R8_fiq,R7-RO,CPSR,SPsR_fiqPC,R14_irq-R13_irq,R12-RO,CPSR

10、,SPSR_irqPC,R14_svc-R13_svc,R12RO,CPSR,SPSR_svcPC,R14_abt-R13_abt,R12RO,CPSR,SPSR_abtPC,R14_u nd-R13_und,R12RO,CPSR,SPSR_und -0b11111 systemPC,R14-R0,CPSR(ARM_V4 及更高版本4.其它位暂不能使用。二: ARM 体系异常中断1.6.1ARM 中异常中断种类异常中断名含义复位复位引脚有效时,包括:系统加电时,系统复位时跳转到复位中断向(rese)量处执行,称为软复位 未定义的指系统认为当前指令未定义时产生中断 令软件中断 这是一个用户定义的

11、中断指令,可用于用户模式下的程序调用特权操 作指令,在实时操作系统中可通过该机制实现系统功能调用指令预取中如果处理器预取的指令地址不存在或地址不允许当前指令访问,当该 段被预取的指令执行时处理器产生指令预取中止异常中断数据访问中如果数据访问的目标地址不存在,或该地址不允许当前指令访问,处 断理器产生数据访问中止异常中断外部请求中当外部中断请求引脚有效,且 CPSR 的 I 控制位被清除时,处理器产生 断外部中断请求(IRQ 异常中断。响应过程及返回略三:ARM 指令集介绍3.1.1 跳转指令;B 跳转指令 BCC table;当 CPSR 的 C 条件标志位为 1 时跳转到 table 执行B

12、L 带返回的跳转指令(跳转后将 PC 值保存到 LR)BLX 带返回和状态切换的跳转指令BX 带状态切换的跳转指令3.1.2 数据处理指令MOV 数据传输MVN 数据求反传送快速中断请外部中断请求信号有效,且求中断请求异(FIQ 常中断CPSR 的 F 位被清除时,处理器产生外部CMP 比较指令CMN 基于相反数的比较指令TST 位测试指令TEQ 相等测试指令ADD 加法SUB 减法RSB 逆向减法指令ADC 带位加法指令SBC 带位减法指令RSC 带位逆向减法指令AND 逻辑与BIC 位清除EOR 逻辑异或ORR 逻辑或LSR 右移LSL 左移3.1.3 乘法指令MUL32 位乘法指令MLA

13、32 位带加数的乘法指令SMULL64 位有符号数乘法指令UMULL 64 位无符号数乘法指令UMLAL64 位带加数无符号数乘法指令3.1.4 杂类算数指令CLZ 用于计算操作数最高端 0 的个数MRS 状态寄存器到通用寄存器传送MSR 通用到状态3.1.6loadstore 内存访问指令Load 从内存读取数据放入寄存器 store 将寄存器中的数据保存到内存LDR 字读取指令LDRB 字节读取指令LDRBT 用户模式的字节读取指令LDRH 半字节读取指令LDRSB 有符号的字节数据读取LDRSH 有符号的半字数据读取LDRT 用户模式的字数据读取STR 字数据写入STRB 字节数据写入S

14、TRBT 用户模式字节数据写入STRH 半字数据写入STRT 用户模式字数据写入3.1.7LDM(1 批量内存字数据读取LDM(2 用户模式的批量内存字数据读取LDM(3 带状态寄存器的批量内存字数据读取STM(1 批量内存字数据写入STM(2 用户模式的批量内存字数据写入3.1.8SWP 交换指令SWPB 字节交换指令3.1.9SWI 软中断指令BKPT 断点中断指令3.1.10ARM 协处理器指令CDP 协处理器数据操作指令LDC 协处理器数据读取指令STC 协处理器数据写入指令MCR ARM 寄存器到协处理器寄存器的数据传送指令MRC 协处理器寄存器到 ARM 寄存器的数据传送指令例程:

15、1.将 R2 的高八位传送到 R3 低八位MOV R0,R2, LSR,#24;将 R2 右移 24 位只剩下高八位传至第八位的位置,转移至R0ORR R3,R0,R3,LSL,#8 ; R3 左移八位,则最低八位为 0,在与 R0 相或则得到 低八位数据LPC1700 系列内部资源:使用 Cortex-M3 处理器,包含 512K 的 Flash,64K 的数据存储空间,以太网 MAC, USB主机/从机/OTG 接口,8 通道的通用 DMA 控制器,4 个 UART,2 条 CAN 通 道,2 个 SSP控制器,SPI 接口,3 个 IIC 接口,2-输入和 2-输出的 IIS 接口,8

16、通 道的 12 位 ADC,10位 DAC,电机控制 PWM,正交编码器接口,4 个通用定时器,6-输出的通用 PWM,带独立电池供电的超低功耗 RTC 和多达 70 个的通用 I/O 引 脚。特性1.可在高至 100MHZ 频率下运行,并包含一个支持八个区的存储器保护单元MPU2.2.内置嵌套的向量中断控制器 NVIC3.具有在系统编程 ISP 和在应用编程 IAP 的 512K 的片上 FLASH存储器映射和外设地址:4G 地址空间地址范围用途描述0X0000 0000-0X0003 FFFF 片上非易失性存储器Flash 存储器(512K)0X1000 0000-0X1000 7FFF

17、片上 SRAM本地SRAM-BANK0(32K0X2007 C000-0X2007 FFFF 片上 SRAM,通常存外设数据AHBSRAM-BANK0(16K0X2008 0000-0X2008 3FFF 片上 SRAM,通常存外设数据AHBSRAM-BANK1(16K0X2009 C000-0X2009 FFFF 通用 I/O0X4000 0000-0X4007 FFFF APB0 外设32 个外设模块,每个16K0X4008 0000-0X400F FFFF APB1 外设32 个外设模块,每个16K0X5000 0000-0X501F FFFF AHB 外设DMA 控制器,以太网接口和

18、USB接口0XE000FFFF0000-0XE00F CONTEX-M3相关功能包括 NVIC和系统节拍控制器APB0 外设外设和基址APB0 夕卜设基址外设名称00X4000 0000看门狗定时器 WD10X4000 4000定时器 020X4000 8000定时器 130X4000 C000UART040X4001 0000UART150X4001 4000未使用60X4001 8000PWM170X4001 C000I2C080X4002 0000SPI0X4002 4000RTC0X4002 8000GPIO 中断0X4002 C000引脚连接模块0X4003 0000SSIP0X40

19、03 4000ADC0X4003 8000CAN 验收滤波器RAM0X4003 C000CAN 验收滤波寄存 器0X4004 0000CAN 公共寄存器0X4004 4000CAN 控制器 10X4004 8000CAN 控制器 20X40040X4005 8000C000-未使用0X4005 C000I2C1910111213141516171819-222324-31APB1外设和基址0X4006 0000-0X4007C000未使用外设基址外设名称未使用保留SSP0DACTIMER2TIMER3UART2UART3I2C2未使用IIS未用重复性中断定时器未使用电机控制 PWMAPB101

20、2345678910111213140X4008 00000X4008 40000X4008 80000X4008 C0000X4009 00000X4009 40000X4009 80000X4009 C0000X400A 00000X400A 40000X400A 80000X400A C0000X400B 00000X400B 40000X400B 8000150X400B C000止乂编码器接口16-300X400C0X400F 80000000-未使用310X400F C000系统控制系统控制模块与系统控制模块相关的引脚有:系统控制模块寄存器描述所有寄存器无论大小都按照字地址边界对齐

21、,如下表引脚名称类型EINTO输入EINT1输入EINT2输入EINT3输入描述外部中断输入 0-低电平/高电平或上升 沿/下降沿有效的通用中断输入,该引脚 可以将处理器从睡眠,深度睡眠或掉电 模式中唤醒外部中断输入 1同上外部中断输入 2-同上外部中断输入 3-同上RESET输入外部复位输入-低电平使新片复位,寄存器名称描述类型复位值地址外部中断EXTINT外部中断标志 R/W寄存器0X000X400F C140EXTMODE外部中断模式 R/W寄存器0X000X400F C148EXTPOLAR外部中断极性 R/W寄存器0X000X400F C14C复位RSID复位源标R/W识 寄存器见中

22、描述0X400F C180系统控制寄存器SCS制状R/W0X000X400F C1A0详细描述;复位源识别寄存器 RSID 0X400F C1800POR上电复位信号有效时置 位,并清除其他位。不受其他复位源影响1RESET 信号有效时置位,EXTR由上电复位信号清零,不 受其他复位信号影响2WDTR看门狗定时器溢出和看门狗模式寄存器 WDTRESET位为 1 时置位,可由任何一个复位源清零3BODR3.3v的电源降至 2.6v时置 位; 如果 Vdd由 3.3v 降至2.5v 后又回升则置位;详见表 3.3lpc1700。pdf保留,用户不要写 1掉点检测器 BOD外部中断标志寄存器 EXT

23、INT 0X400F C140当外部中断引脚使能,该引脚的电平或边沿(由EXTPOLOR 和 EXTMODE 寄存器来决定)信号将会置位 EXTINT 的中断标志位,这会向嵌套中断寄存器 NVIC 提 交相应的中断请求,如果引脚中断使能,则产生中断。通过向 EXTINT 的 EINT0-EINT3 写入 1 来将其清零,在电平触发模式下只有信号 消失后位 符号描述复位值7-4才能被清零。1位名称描述复位值0EINT0该引脚有效时置位,通过写 1 清零01EINT1同上02EINT2同上03EINT3同上07-4na外部中断模式寄存器 EXTMODE 0X400F C148用来选择电平触发还是边

24、沿触发位名称值描述复位值EXTMODE00EINT0触发选择电平001EINT0触发选择边沿EXTMODE20同上EXTMODE1011同上0EXTM0DE3同上4-7保留,不要写 1NA外部中断极性寄存器 EXTPOLAR 0X400F C14C用来选择相应中断是低电平还是高电平触发,是上升沿还是下降沿触发位名称值描述复位值低电平或下降沿有效,0由 EXTMODE0 定0EXTPOLAR01咼电平或上升沿有效,由 EXTMODE0 定00同上1EXTP0LAR1100同上2EXTP0LAR2100同上3EXTP0LAR3104-7保留,不要写 1系统控制和状态寄存器 SCS 0X400F C

25、1A0位符号值描述访问复位值0-3 -保留NA40主震荡频率选择OSCRANGE11M-20MHZR/W015M-24MHZ5主震荡器使能主震荡器被禁止0OSCEN1主震荡器被使能,且在正确R/W0连接外部XATL1 和XATL2 时启动6主震荡器状态主震荡器不稳0定,不能做时OSCSTAT1钟源RO稳定,可以 用。必须通过OSCEN 使能07-31 -保留NA计时和功率控制系统计时和功率控制寄存器汇总wwimw fem驳斛OVOOdOOtXO0M/3 型睾1aHidNOOHId(lidasn) nid9809dOOtXOVNOM 型睾买韵 OlidCmTOIId8809dOOtXOIVlSO

26、UdWOOdOOtXOo M/3 型睾畐SB OlidOdOOUd0800dOOtXO0M/3 型睾aondNOOOUd(lid王Olid)90L9dOOtXOBS03SM10PLL1CFGPLL1 配 置寄存R/W器00X400F C0A4PLL1STATPLL1 状态寄存 RO 器00X400F C0A8PLL1FEEDPLL0 馈送寄存 WO 器NA0X400F C0AC时钟分频器CCLKCFGCPU 时 钟配置R/W 寄存器00X400F C104USBCLKCFGUSB 时 钟配置R/W寄存器00X400FC108IRCTRIMIRC 调整 寄存器R/W0XA00X400FC1A4P

27、CLKSEL0外设时钟选择 R/W寄存器 000X400F C1A8PCLKSEL1外设时钟选择 R/W寄存器 100X400F C1AC功率控制PCON功率控制寄存 R/W00X400F C0C0器PCONP外设功率控制 R/W寄存器0X03BE0X400F C0C4应用CLKOUTCFG时钟输出配置 R/W寄存器00X400F C1C8时钟源选择寄存器 CLKSRCSEL位符号值描述CLKSRC如下选择 PLL0 的时钟源:00选择内部 RC 振荡器作为01PLL0 时钟源(默认1:0选择主振荡器作为PLL010时钟源11选择 RTC 振荡器作为PLLO 时钟源保留保留PLLO 控制寄存器

28、 PLLOCON 只有在发生有效的馈送序列之后才能起 作用,地址为 0X400F C080位符号描述复位值0PLLE0PLL0使能位01PLLC0PLL0连接07:2PLL0 配置寄存器 PLL0CFG 0X400F C0847:2位符号描述复位值14:0MSEL0PLL0 倍频器,在 0PLL0 计算中提供 M 值存储这里的值为M-1,支持 M 的值由6-512,以及下面讨 论15保留NAPLLO 状态寄存器(只读 PLLOSTAT 0X400F C008位符号描述复位值14:0MSEL0读回 PLL0 倍频值,这 是当前正使用的值,比 实际倍频值值少 1015-保留NA23:16NSEL0

29、读回 PLL0 分频值,这 是当前使用值,比他实 际分频值少 1024PLLE0_STAT读回 PLL0 使能位。 1 激活状态 0 关闭 状态;掉电模式自动清J | A零025PLLC0_STAT读回 PLL0 连接位。当0PLLCO 和 PLLE0 都为 1时 PLL0作为 1700 系列 CORTEX-M3 处23:16NSELOPLLO 预分频器提供 0N 的值,N-1 , 1-3231 : 24保留NA理器时钟源被连接;当 有一位 0 时PLLO 被旁 路;掉电模式自动清零反映 PLL0 的锁定状态 00-未锁定;1-锁定到指定频率PLL0 中断:PLOCK0PLL0 连接模式;PL

30、L0 被关闭且断开连接,PLL0 输出时钟与输入时钟相同PLL0 被激活但尚未连接,PLL0 可在 PLOCK0 有效后连接与 00 组合相同,消除了已被连 接但没使能的可能PLL0 已被连接且作为系统时钟 源PLLO 馈送寄存器 PLLOFEED 0X400F C08C26PLOCK031:27-保-留NAPLLC0PLLE0PLL 功能必须将正确的馈送序列写入本寄存器才能使PLL0CON 和 PLL0CFG的更改有效* 将 0XAA 写入 PLL0FEED* 将 0X55 写入 PLL0FEED写入顺序要正确,写时其他操作不能对本地址空间访问(0 x400fc000-0 x400f fff

31、f )位名称描述复位值7:0PLL0FEED 正确写入0 x00PLL0 初始化过程;1.如果 PLL0 已被连接则先用一个馈送序列断开连接2. 用一个馈送序列禁止 PLL03. 如果需要,可以在没有 PLL0 的情况下改变 CPU 时钟分频器的 设置以加快操作4. 操作时钟源选择选择控制寄存器,改变时钟源5. 写 PLL0CFG 并用一个馈送序列使其生效,PLL0CFG 只有在 PLL0 被禁止时才能更新6.用一个馈送序列使能 PLL07.改变 CPU 分频器设置,使之与 PLLO 起操作。在连接 PLLO 之 前完成这一操作是很重要的8. 通过监控 PLL0STAT 寄存器的 PLOCK0

32、,或使用 PLOCK0 中断 来等待 PLL0 完成锁定。此外,当使用低频时钟(32K )作为PLL0 时钟源时,需要等待一个固定的时间。当 PLL0 的参考频率 少于100KHZ 或大于 20MHZ 时,PLOCK0 的值可能不稳,在这些情况下,启动 PLL0 后等待一段时间即可9. 用一个馈送序列连接 PLL0PLL1 仅接受主震荡器的时钟输入,并且为 USB 子系统提供固定的48KHZ 时钟CPU 时钟配置寄存器CCLKCFG 0X400F C104从 PLL0 输出中建立选择CPU 时钟 CCLK 的分频值,分频值只能是奇数,CCLK0X00通过+ 1 分频USB 时钟配置寄存器 US

33、BCLKCFG 0X400F C108只有在 PLL1 禁止时才能起作用,他控制对 PLL0 输出时钟的分频, 然后提供给 USB 子系统使用位 符号7:0 CCLKSEL描述从 PLLO 中选择建立 USB 03:0 USBSEL时钟的分频值。通过USBSEL+1 分频7:4 -保留NAIRCTRIM IRC 调整寄存器 地址 0X400F C1A4用于调整片内 4MHZ 震荡位名称描述复位值7:0IRCtrimIRC 调整,控制片内 4M IRC 频率0 xA015:8保留NA外设时钟选择寄存器 PCLKSEL0 0X400F C1A8PCLKSEL1 0X400F C1ACPCLKSEL0 位描述位符号描述复位值1:0PCLK_WDTWDT 的外设时钟选择003:2PCLK_TIMER0TIMER0 的外设时钟选择00PCLK_PWM1PCLK_I2C0PCLK_SPIPCLK_SSPIPCLK_DACPCLK_ADCPCLK_CAN1PCLK_CAN2PCLK TIMER1PCLK_UARTOP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论