菜鸟的ARM学习笔记proteus仿真

上传人:ji****72 文档编号:39533284 上传时间:2018-05-16 格式:DOC 页数:32 大小:266.50KB
返回 下载 相关 举报
菜鸟的ARM学习笔记proteus仿真_第1页
第1页 / 共32页
菜鸟的ARM学习笔记proteus仿真_第2页
第2页 / 共32页
菜鸟的ARM学习笔记proteus仿真_第3页
第3页 / 共32页
菜鸟的ARM学习笔记proteus仿真_第4页
第4页 / 共32页
菜鸟的ARM学习笔记proteus仿真_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《菜鸟的ARM学习笔记proteus仿真》由会员分享,可在线阅读,更多相关《菜鸟的ARM学习笔记proteus仿真(32页珍藏版)》请在金锄头文库上搜索。

1、菜鸟的菜鸟的 ARMARM 学习笔记学习笔记下面就是我学习 ARM 的第一阶段的记录,这段时间的学习基本上是使用 Proteus 配合 KEIL 做简单的实验(最后有实验的目录以及下载地址)。通过该阶段的学习,算是对 ARM 的基本结构有了了解。该阶段主要学习资料是基于 PROTEUS 的 ARM 虚拟开发技术,以及另外一本 ARM 体 系结构的书籍,感觉这类书都差不多。 学习学习 ARM 前需要的基础前需要的基础1. 前辈学习 ARM 的经验! (我是在嵌入式开发联盟的新人区看的帖子。) 2. 掌握 C 语言编程。 3. 了解简单的微机算计原理知识,例如二进制,计算机程序的执行过程,总线(数

2、据、 地址、控制),软件系统(系统软件与应用软件)。 4. 听说过 RISC 与 CISC,高级语言与低级语言的区别。 5. 最好听说过串行传输与并行传输。 6. 普林斯顿(ARM7)和哈佛结构(ARM9、10、11)。 什么是什么是 ARM?学 ARM,自然要理解 ARM 是什么,也好明确学习目标。网上的资料很多,“ARM 是一 家公司,也是一个处理器体系”我将学 ARM 分为以下几类:1. 做 ARM 的核心研发。也就是进 ARM 公司做 IP 核,应该是学电子之类的东西吧。 2. 买 ARM 的 IP 核,做具体的嵌入式处理器、核心板,例如三星和 NXP。 3. 买 ARM 核心板,连接

3、外围电路制作教育用或开发用的开发板,或者直接开发其它中 断产品。 4. 买 ARM 开发板做产品,要做系统软件和应用软件。 3 和 4 基本并列了。ARM 基础基础任何一本介绍 ARM 体系结构书籍都应该有这些内容。处理器模式处理器模式用户模式、特权模式又分为系统模式、管理模式、快中断模式、中断模式、终止模式、 未定义指令终止模式。2.2. 寄存器寄存器R0-R7、R15 和 CPSR 是所有模式共享的。 R8-R12 出快中断模式有 RX-fiq 外所有模式共享。 R13、R14 和 SPSR 只有用户模式和系统模式共享,其它都有似有 SPSR。R15(PC)程序计数器 R16(CPSR)程

4、序转台寄存器 R13(SP)堆栈指针 P14(LR)链接寄存器ARM 指令集指令集 汇编程序设计汇编程序设计略了,我看了,但是做 Proteus 仿真实验没用上,两天就忘了。LPC2000我买的 3 本 ARM 入门书籍中有两本都是以 LPC2000 系列为例的,其实从网上可以下载 到具体 LPC2XXX 处理器的 datasheet,上面的资料是最权威和详尽的。引脚选择引脚选择PINSEL0、PINSEL1 设置各个引脚的功能。中断中断中断的寄存器太多了,没记。GPIOGPIO做输入输出。以 P0 口为例,寄存器有 IO0PIN、IO0SET、IO0DIR、IO0CLR。存储器存储器1. L

5、PC2000 可用地址为 4GB,内部 2GB(00x7FFFFFFF),外部 2GB(0x800000000xDFFFFFFF),高 0.5GB 是 I/O 设备地址空间 (0xE00000000xFFFFFFFF)。 2. 内部最低 128KB 或 256KB 为 Flash。 3. 高 1GB(0x400000000x7FFFFFFF)为 SRAM。其中 0x400000000x40001FFF 为片内 SRAM。 4. I/O 部分,低 2MB(0xE00000000xE001FFFFF)为 VPB 外设空间,高 2MB(0xFFE000000xFFFFFFFF)为 AHB 外设空间。

6、 5. FLASH 加速模块。 MAMCR 设置是否允许加速、MAMTIM 设置预取处理器时钟。时钟时钟cclk、pclk 分振荡器模式和从属模式,振荡器 Fosc 经 PLL 升频为 cclk,cclk 经过 VPB 分频后为 pclk。 设置设置 cclkcclk PLLCFG 设置 PLL 倍频 M,PLL 分频器值 P PLLCON PLL 的允许与连接 PLLSTAT 读取 PLL 状态 PLLFEED 使 PLL 设置生效 例 Fosc=12MHz,cclk=60MHz,则 M=60/12-1=4,因为 Fcco=P*cclk*2(要求 156M320MHz)。设置设置 pclkp

7、clk 由 VPBDIV 设置 00 为 4 分频、01 为不分频、10 为二分频。定时器定时器pclk 定时,定时器为 32 位,从 0 计数到 0xFFFFFFFF。以 T0 为例 T0TC,计数器初值 T0PR,定时计数器分频,pclk/(PR+1) T0MR03,匹配值,当计数带到时候,按照 T0MCR 的设置触发不同动作。 T0MCR,计数器到达匹配值的动作(复位、中断、停止) T0EMR,外部匹配寄存器,到达匹配值时候外部引脚的操作(MAT0.03) T0CCR,外部引脚有特定动作时候,计数值存入 T0CR03,设置是否触发中断 T0CR03,在 T0CCR 控制下存 TC 值。

8、T0TCR,复位与使能 T0IR,对应 MR 与 CR 中断PWMPWM看门狗看门狗Pclk 四分频后控看门狗的 32 为计数器减一。 WDTC,看门狗计数器初值。 WDMOD,看门狗工作模式,可以开启和复位看门狗。 WDFEED,喂狗寄存器。 WDTV,看门狗计数器当前值。UARTUART引脚 RxD0,TxD0 U0RBR,暂存接受数据。 U0THR,暂存发送数据。访问它时,U0LCR 的 DLAB 位为 0。 U0IER,串口个状态的中断允许。 U0IIR,中断标志。 U0FCR,控制 UART 的 FIFO(暂时没明白)。 U0LCR,传输模式。U0LSR,当前状态(错误指示)。 U0

9、DLL、U0DLM,pclk/( U0DLL U0DLM),访问时 UOLCR 的 DLAB 位为 1。SPISPI全双工同步串行接口 引脚: SCK0,串行时钟。 SSEL0,从机选择。 MISO,主机输入,从机输出。 MOSI,主机输出,从机输入。 寄存器: S0SPCR,SPI 控制。 S0SPSR,SPI 状态。 S0SPDR,SPI 数据。 S0SPCCR,控制 SCK 的频率。必须为偶数且大于等于 8。(指示一个 SCK 周期中的 pclk 周 期) S0SPINT,SPI 中断。I2CI2C引脚:SDA,SCL 寄存器:I2CONSET I2CONCLR I2CON 上面三个寄存

10、器控制应答标志位,中断标志、停止和起始以及 I2C 使能。 I2STAT,I2C 状态。 I2DAT,I2C 数据。 I2ADR,I2C 从模式地址。 I2STAT,I2C 状态。 I2SCLH,高电平占空比占 pclk 周期个数。 I2SCLL,低电平占空比占 pclk 周期个数。 分频 fpclk/( I2SCLH+I2SCLL)。ADAD 转换转换引脚:AIN03 寄存器: ADCR,工作模式选择。 ADDR,转换数据以及标志的暂存。基于基于 Proteus 的的 ARM 实验目录实验目录菜鸟的菜鸟的 ARMARM 学习笔记(第一阶段)学习笔记(第一阶段) 1. LED 闪烁ARM 的

11、Proteus 实验 2. 开关控制 LEDARM 的 Proteus 实验 3. LCDARM 的 Proteus 实验 4. UARTARM 的 Proteus 实验 5. Eint1 外部中断ARM 的 Proteus 实验 6. 多个外部中断ARM 的 Proteus 实验 7. 中断结合串口ARM 的 Proteus 实验 8. 定时器ARM 的 Proteus 实验 9. SPI 通信ARM 的 Proteus 实验 10. SPI 通信(多从设备)ARM 的 Proteus 实验 11. ADC 数模转换ARM 的 Proteus 实验 1 1、LEDLED 闪烁闪烁ARMARM

12、 的的 ProteusProteus 实验实验实验原理实验原理ARM(LPC21XX)的一个 I/O 口接 LED,通过给它送 0 和 1 来设置 LED 的亮和灭。Proteus 仿真电路图仿真电路图步骤步骤KEILKEIL1. 创建新工程 2. 选择 ARM 型号(KEIL 会自动生成启动代码 startup.s) 3. 添加源文件,编写程序 4. 设置项目选项(是否输出 hex、lst 文件,设置 linker script) ProteusProteus1. 绘制电路图 2. 载入程序 3. 仿真 C 语言源程序语言源程序/* */ /* */ /* led.c: 用 ARM 点亮一个

13、 led 并闪烁,有点浪费 */ /* */ /* */ #include /* * *函数名: delay() *描述: 软件延时 * */ void delay (void) unsigned volatile long i,j;for(i=0;i #define P0_1 0x02;/*P0.1*/ /* * *函数名: delay() *描述: 软件延时 * */ void delay (void) unsigned volatile long i;for(i=0;i #define rs (1 #include “uart.h“ #define CR 0x0D char ledDown=“The LED is down!n“; char ledUp=“The LED is up!n“;int putchar (int ch) /* 向串口输出一个字符 */if (ch = n) while (!(U1LSR U1THR = CR;awhile (!(U1LSR return (U1THR = ch); void delay (void) unsigned volatile long i,j;for(i=0;i #

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号