proteus仿真ARMWord格式文档下载.docx
《proteus仿真ARMWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《proteus仿真ARMWord格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
2.买ARM的IP核,做具体的嵌入式处理器、核心板,例如三星和NXP。
3.买ARM核心板,连接外围电路制作教育用或开发用的开发板,或者直接开发其它中断产品。
4.买ARM开发板做产品,要做系统软件和应用软件。
3和4基本并列了。
ARM基础
任何一本介绍ARM体系结构书籍都应该有这些内容。
处理器模式
用户模式、特权模式又分为系统模式、管理模式、快中断模式、中断模式、终止模式、未定义指令终止模式。
2.寄存器
R0-R7、R15和CPSR是所有模式共享的。
R8-R12出快中断模式有RX-fiq外所有模式共享。
R13、R14和SPSR只有用户模式和系统模式共享,其它都有似有SPSR。
R15(PC)程序计数器
R16(CPSR)程序转台寄存器
R13(SP)堆栈指针
P14(LR)链接寄存器
ARM指令集汇编程序设计
略了,我看了,但是做Proteus仿真实验没用上,两天就忘了。
LPC2000
我买的3本ARM入门书籍中有两本都是以LPC2000系列为例的,其实从网上可以下载到具体LPC2XXX处理器的datasheet,上面的资料是最权威和详尽的。
引脚选择
PINSEL0、PINSEL1设置各个引脚的功能。
中断
中断的寄存器太多了,没记。
GPIO
做输入输出。
以P0口为例,寄存器有IO0PIN、IO0SET、IO0DIR、IO0CLR。
存储器
1.LPC2000可用地址为4GB,内部2GB(0~0x7FFFFFFF),外部2GB(0x80000000~0xDFFFFFFF),高0.5GB是I/O设备地址空间(0xE0000000~0xFFFFFFFF)。
2.内部最低128KB或256KB为Flash。
3.高1GB(0x40000000~0x7FFFFFFF)为SRAM。
其中0x40000000~0x40001FFF为片内SRAM。
4.I/O部分,低2MB(0xE0000000~0xE001FFFFF)为VPB外设空间,高2MB(0xFFE00000~0xFFFFFFFF)为AHB外设空间。
5.FLASH加速模块。
MAMCR设置是否允许加速、MAMTIM设置预取处理器时钟。
时钟
cclk、pclk
分振荡器模式和从属模式,振荡器Fosc经PLL升频为cclk,cclk经过VPB分频后为pclk。
设置cclk
PLLCFG设置PLL倍频M,PLL分频器值P
PLLCONPLL的允许与连接
PLLSTAT读取PLL状态
PLLFEED使PLL设置生效
例Fosc=12MHz,cclk=60MHz,则M=60/12-1=4,因为Fcco=P*cclk*2(要求156M~320MHz)。
设置pclk
由VPBDIV设置00为4分频、01为不分频、10为二分频。
定时器
pclk定时,定时器为32位,从0计数到0xFFFFFFFF。
以T0为例
T0TC,计数器初值
T0PR,定时计数器分频,pclk/(PR+1)
T0MR0~3,匹配值,当计数带到时候,按照T0MCR的设置触发不同动作。
T0MCR,计数器到达匹配值的动作(复位、中断、停止)
T0EMR,外部匹配寄存器,到达匹配值时候外部引脚的操作(MAT0.0~3)
T0CCR,外部引脚有特定动作时候,计数值存入T0CR0~3,设置是否触发中断
T0CR0~3,在T0CCR控制下存TC值。
T0TCR,复位与使能
T0IR,对应MR与CR中断
PWM
看门狗
Pclk四分频后控看门狗的32为计数器减一。
WDTC,看门狗计数器初值。
WDMOD,看门狗工作模式,可以开启和复位看门狗。
WDFEED,喂狗寄存器。
WDTV,看门狗计数器当前值。
UART
引脚RxD0,TxD0
U0RBR,暂存接受数据。
U0THR,暂存发送数据。
访问它时,U0LCR的DLAB位为0。
U0IER,串口个状态的中断允许。
U0IIR,中断标志。
U0FCR,控制UART的FIFO(暂时没明白)。
U0LCR,传输模式。
U0LSR,当前状态(错误指示)。
U0DLL、U0DLM,pclk/(U0DLLU0DLM),访问时UOLCR的DLAB位为1。
SPI
全双工同步串行接口
引脚:
SCK0,串行时钟。
SSEL0,从机选择。
MISO,主机输入,从机输出。
MOSI,主机输出,从机输入。
寄存器:
S0SPCR,SPI控制。
S0SPSR,SPI状态。
S0SPDR,SPI数据。
S0SPCCR,控制SCK的频率。
必须为偶数且大于等于8。
(指示一个SCK周期中的pclk周期)
S0SPINT,SPI中断。
I2C
SDA,SCL
I2CONSET
I2CONCLR
I2CON
上面三个寄存器控制应答标志位,中断标志、停止和起始以及I2C使能。
I2STAT,I2C状态。
I2DAT,I2C数据。
I2ADR,I2C从模式地址。
I2SCLH,高电平占空比占pclk周期个数。
I2SCLL,低电平占空比占pclk周期个数。
分频fpclk/(I2SCLH+I2SCLL)。
AD转换
AIN0~3
ADCR,工作模式选择。
ADDR,转换数据以及标志的暂存。
基于Proteus的ARM实验目录
菜鸟的ARM学习笔记(第一阶段)
1.LED闪烁——ARM的Proteus实验
2.开关控制LED——ARM的Proteus实验
3.LCD——ARM的Proteus实验
4.UART——ARM的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实验
实验原理
ARM(LPC21XX)的一个I/O口接LED,通过给它送0和1来设置LED的亮和灭。
Proteus仿真电路图
步骤
KEIL
1.创建新工程
2.选择ARM型号(KEIL会自动生成启动代码startup.s)
3.添加源文件,编写程序
4.设置项目选项(是否输出hex、lst文件,设置linkerscript)
Proteus
1.绘制电路图
2.载入程序
3.仿真
C语言源程序
/******************************************************************************/
/**/
/*led.c:
用ARM点亮一个led并闪烁,有点浪费……*/
#include<
LPC21xx.H>
/*******************************************************************************
**函数名:
delay()
**描述:
软件延时
********************************************************************************/
voiddelay(void){
unsignedvolatilelongi,j;
for(i=0;
i<
60000;
i++)
for(j=0;
j<
5;
j++)
;
}
intmain(void){
PINSEL0=0;
/*设置引脚为GPIO*/
IO0DIR=0x000001;
/*将P0.0设置为输出*/
IO0SET=0x000001;
/*将P0.0置1,也就是让led灭*/
while
(1){
IO0CLR=0x000001;
delay();
IO0SET=0x000001;
}
ARM的P0.1口接按钮,再通过P0.0控制LED的亮、灭。
本实验的电路图以及实验均在上一个实验基础之上修改。
其中电路图只多了一个开关。
实验步骤略(与上一实验相同)
用ARM实现开关控制led并亮灭,还是有点浪费……*/
#defineP0_10x02;
/*P0.1*/
unsignedvolatilelongi;
10000;
intp01State;
whil