LPC2119调试说明Word格式文档下载.docx

上传人:b****4 文档编号:15915294 上传时间:2022-11-17 格式:DOCX 页数:27 大小:883.36KB
下载 相关 举报
LPC2119调试说明Word格式文档下载.docx_第1页
第1页 / 共27页
LPC2119调试说明Word格式文档下载.docx_第2页
第2页 / 共27页
LPC2119调试说明Word格式文档下载.docx_第3页
第3页 / 共27页
LPC2119调试说明Word格式文档下载.docx_第4页
第4页 / 共27页
LPC2119调试说明Word格式文档下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

LPC2119调试说明Word格式文档下载.docx

《LPC2119调试说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LPC2119调试说明Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。

LPC2119调试说明Word格式文档下载.docx

FIQ

二、系统控制模块

1.外部中断输入

✧由于外部中断管脚输入内部没有上拉电阻,所以管脚必须外接一上拉电阻,以确保管脚不会悬空。

✧对外部中断方式寄存器(EXTMODE)及外部中断极性寄存器(EXTPOLAR)设置时会影响VPBDIV寄存器,可用以下方法解决:

1)VPBDIV写入0x0

2)写入想要设置的值到EXTMODE或EXTPOLAR

3)VPBDIV写入与2)中相同的值

4)VPBDIV写入原来的值

举例:

设置EXTMODE

VPBDIV=0x0//VPBDIV写入0

EXTMODE=0x1//EXTMODE设置为1

VPBDIV=0x1//VPBDIV写入与EXTMODE一样的值

VPBDIV=0x1//VPBDIV恢复原来的值0x1若原来的值为0则写0x0

设置EXTPOLAR与EXTMODE一致,只要把第二行代码改为EXTPOLAR=0x1即可

2.存储器映射控制

MAMMAP用于改变地址从0x00000000开始的中断向量的映射

MAMMAP=0x2(用户RAM模式)表示产生中断时,从0x00000008的读数/取指是对0x40000008单元进行操作;

MAMMAP=0x1(用户FLASH模式)表示产生中断时,从0x00000008的读数/取指是对片内FLASH单元的0x00000008进行操作;

MAMMAP=0x2(BOOT装载程序模式)表示产生中断时,从0x00000008的读数/取指是对0x7fffe008单元进行操作。

3.PLL

PLL频率计算方法

Fosc:

晶振频率;

Fcco:

PLL电流控制震荡器的频率;

Fcclk:

PLL输出频率(即CPU的时钟频率)

M:

PLLCFG寄存器中MSEL位的倍频器值;

P:

PLLCFG寄存器中PSEL位的分频器值。

Fcclk=M×

Fosc或Fcclk=Fcco/(2×

P)

PLL输入和设定必须满足以下条件:

✧Fosc为10~25MHx

✧Fcclk为10MHz~Fmax(LPC2119最大允许频率)

✧Fcco为156~320MHz

Fosc=12MHz

PLLCFG_bit.MSEL=3;

//M=3,P=1PLL输出频率=CCLK=48Mhz

PLLCFG_bit.PSEL=1;

PLLFEED=0xAA;

PLLFEED=0x55;

PLLCON_bit.PLLE=1;

//EnablethePLL

while(!

(PLLSTAT&

PLOCK));

//WaitforPLLtolock

PLLCON_bit.PLLE=1;

PLLCON_bit.PLLC=1;

PLLFEED=0xAA;

PLLFEED=0x55;

4.功率控制

PCON=0;

//功率控制

PCONP_bit.PCURT1=0;

//关闭UART1功能

PCONP_bit.PCPWM0=0;

//关闭PWM0功能

PCONP_bit.PCRTC=0;

//关闭RTC功能

5.复位

P0.14(41脚)必须上拉一10K电阻使之上电时保持高点平,否则上电时会因为

为低电平而强制引导BOOTBLOCK的操作。

6.VPB分频器

VPB分频器决定处理器时钟(cclk)与外设器件所使用的时钟(pclk)之间的关系。

VPBDIV1:

0VPB时钟速率如下:

00:

VPB总线时钟为处理器时钟的1/4。

01:

VPB总线时钟与处理器时钟相同。

10:

VPB总线时钟为处理器时钟的1/2。

11:

保留。

将该值写入VPBDIV寄存器无效(保留原来的设定)。

三、存储器加速模块

MAMCR_bit.MODECTRL=2;

//存储器加速模块功能完全使能

MAMTIM_bit.CYCLES=3;

//因为Fcclk=48M大于40M,所以MAMTIM的CYCLES取3。

四、向量中断控制器

设置中断响应程序的步骤如下:

#defineVIC_EINT2_bit(1<

<

VIC_EINT2)

__disable_interrupt();

VICIntEnClear=0xffffffff;

//中断使能寄存器所有位清0

VICDefVectAddr=(U16)&

DefDummyInterrupt;

//默认向量地址寄存器的值等于

//DefDummyInterrupt

VICIntSelect&

=~VIC_EINT2_bit;

//设置IRQ中断

VICVectAddr0=(U16)&

eint2;

//中断服务程序地址

VICVectCntl0=0x20|VIC_EINT2;

//IRQ使能,并给外部中断2分配一独立的编号

VICIntEnable=VIC_EINT2_bit;

//使能外部中断2

//若还需要设置别的中断可依次设置VICVectAddr1~15,VICVectCntl1~15

__enable_interrupt();

以下是中断源的VIC通道

五、引脚连接模块

PINSEL0控制P0.0~P0.15的管脚连接功能,PINSEL1控制P0.16!

P0.31的管脚连接功能,PINSEL2则按照下表来选择管脚连接功能:

只有当管脚选择GPIO功能时,IO0DIR/IO1DIR寄存器的方向控制位才有效。

六、GPIO

􀁺

单个位的方向控制

单独控制输出的置位和清零

所有I/O口在复位后默认为输入

P0口作为GPIO时如果选择输入则应外接一上拉电阻,因为P0口无内置上拉电阻;

P1口则有内置上拉电阻,作为输入时不需要外接上拉电阻。

IODIR在初始化时设置,先设置好引脚连接为GPIO功能后就可以设置方向寄存器,如果引脚设置为输出,则在需要设置引脚状态时根据需要的状态分别设置I0SET和IOCLR,使相应引脚输出高点平或低电平;

可读IOPIN寄存器来确定当前引脚的状态。

七、UART0

寄存器映射如下表:

UART0初始化举例:

U16divisor=pclk/(16*baud);

//计算除数锁存值

U0LCR=0x83;

//除数锁存访问允许,禁止间隔发送,奇数,禁止奇偶产生及校验,

//1个停止位,8位字符长度。

U0DLL=LSB(divisor);

//设置除数锁存低8位

U0DLM=MSB(divisor);

//设置除数锁存高8位

U0LCR=0x03;

//正常工作

U0IER_bit.RDAIE=1;

//打开接收中断

发送数据举例:

while(U0LSR_bit.THRE==0);

//如果发送保持寄存器不为空则等待,只到空闲为止

U0THR=data;

//发送数据

使用中断接收数据时,进入中断后必须先读中断标志寄存器,才能读数据。

读中断标志寄存器低4位代码定义如下表:

即U0IIR低4位为4就是接收中断,为2就是发送中断。

八、I2C总线

I2C的SDA和SCL引脚必须接上拉电阻,否则无法使用。

初始化如下:

I2SCLH=I2SCLL=I2CCLK;

I2CCLK=pclk/(2*fi2c),如果需要位速率为100K,pclk=12M,则I2CCLK=60

下边列出I2C总线用到的子程序:

#defineAT24C01A0xA0/*定义E2PROM的地址*/

/*;

;

名称:

i2c_start

功能:

I2C发送起始信号启动总线传输

入口参数:

出口参数:

0表示正常1表示故障

*/

U8i2c_start()

{

U16wait_time=10000;

I2CONCLR=0x2C;

/*清除起始标志位STA中断标志位SI应答标志位AA*/

I2CONSET=0x40;

/*BIT6=1使能I2C总线*/

I2CONSET=0x60;

/*启动I2C总线即发送起始标志*/

while((I2CONSET&

0x08)==0);

/*等待SI为1此处应避免死循环*/

return

(1);

}

sendbyte

发送一字节数据

data_buf发送的数据

voidsendbyte(U8data_buf)

I2DAT=data_buf;

/*发送数据*/

I2CONCLR=0x28;

/*清除起始标志STA和中断标志SI*/

/*等待SI为1*/

return;

rcvbyte_na

接收I2C总线上一字节数据并发送非应答位一般在最后接收到的字节时使用

I2DAT

U8rcvbyte_na()

/*设置为发送非应答位即AA=0同时清SI中断标志*/

return(I2DAT);

/*读取接收到的数据利用函数返回*/

rcvbyte_a

接收I2C总线上一字节数据并发送应答位

U8rcvbyte_a()

I2CONSET=0x04;

/*设置AA=1即发送应答位*/

/*清SI标志*/

w

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1