LPC213x系列底层硬件驱动函数库Word下载.docx

上传人:b****4 文档编号:16496880 上传时间:2022-11-24 格式:DOCX 页数:103 大小:58.13KB
下载 相关 举报
LPC213x系列底层硬件驱动函数库Word下载.docx_第1页
第1页 / 共103页
LPC213x系列底层硬件驱动函数库Word下载.docx_第2页
第2页 / 共103页
LPC213x系列底层硬件驱动函数库Word下载.docx_第3页
第3页 / 共103页
LPC213x系列底层硬件驱动函数库Word下载.docx_第4页
第4页 / 共103页
LPC213x系列底层硬件驱动函数库Word下载.docx_第5页
第5页 / 共103页
点击查看更多>>
下载资源
资源描述

LPC213x系列底层硬件驱动函数库Word下载.docx

《LPC213x系列底层硬件驱动函数库Word下载.docx》由会员分享,可在线阅读,更多相关《LPC213x系列底层硬件驱动函数库Word下载.docx(103页珍藏版)》请在冰豆网上搜索。

LPC213x系列底层硬件驱动函数库Word下载.docx

//并设置为输出模式

3.P0口GPIO输入、输出方向设置

在P0口中,设置num中“1”所对应位的输入、输出方式。

表格3P0口GPIO输入、输出方向设置

uint8P0_GPIODir(uint32num,uint8dir)

num需要初始化的管脚

dir管脚的输入输出方向

1——输出

0——输入

1操作成功

0操作失败

num是按位操作的

P0.31仅为输出口

P0_GPIODir((1<

16),1);

//将P0.4和P0.16设置为输出模式

4.P1口GPIO输入、输出方向设置

在P1口中,设置num中“1”所对应位的输入、输出方式。

表格4P1口GPIO输入、输出方向设置

uint8P1_GPIODir(uint32num,uint8dir)

0——输入

1操作成功

0操作失败

P1_GPIODir(1<

//将P1.18设置为输出模式

5.P0口GPIO输出“1”

在P0口中,置位num为1的位所对应的管脚。

表格5P0口GPIO输出“1”

P0_GPIOSet(num)

P0_GPIOSet((1<

16));

//使P0.4和P0.16输出“1”

6.P0口GPIO输出“0”

在P0口中,清零num为1的位所对应的管脚。

表格6P0口GPIO输出“0”

P0_GPIOClr(num)

P0_GPIOClr((1<

//使P0.4和P0.16输出“0”

7.P0口GPIO输出

将value所对应的值输出到P0口。

表格7P0口GPIO输出

Write_P0(value)

value需要输出的值

Write_P0(0xaa);

//使P0.0~P0.7输出“0xaa”

8.P1口GPIO输出“1”

在P1口中,置位num为1的位所对应的管脚。

表格8P1口GPIO输出“1”

P1_GPIOSet(num)

P1_GPIOSet(1<

18);

//使P1.18输出“1”

9.P1口GPIO输出“0”

在P1口中,清零num为1的位所对应的管脚。

表格9P1口GPIO输出“0”

P1_GPIOClr(num)

num需要设置的管脚

P1_GPIOClr(1<

//使P1.18输出“0”

10.P1口GPIO输出

将value所对应的值输出到P1口。

表格10P1口GPIO输出

Write_P1(value)

value需要输出的值

Write_P1(0xaa<

//使P1.18~P1.25输出“0xaa”

1.1.2源码分析

程序清单0.1GPIO.c源代码

/******************************************************************************************

**文件名称:

GPIO.c

**文件描述:

LPC213x系列GPIO操作软件包。

**文件说明:

对于引脚的操作使用位操作方式。

******************************************************************************************/

#include"

config.h"

**函数名称:

voidP0_GPIOInit(uint32num,uint8dir)

**功能描述:

将P0口中,num为1的位初始化为GPIO。

**输 入:

num需要初始化的管脚

**dir管脚的输入输出方向

**1——输出

**0——输入

**输 出:

**说明:

如果dir错误,则默认为输入方向。

**调用模块:

P0_GPIOInit((1<

**//且设置为输入模式

voidP0_GPIOInit(uint32num,uint8dir)

{

uint8i;

if((num&

0xffff)!

=0)//初始化引脚P0.0~P0.15,需要设置PINSEL0

for(i=0;

i<

16;

i++)

if((num&

(1<

i))!

=0)

PINSEL0=PINSEL0&

(~(0x03<

(2*i)));

if(num>

0xffff)//初始化引脚P0.16~P0.31,需要设置PINSEL1

for(i=16;

32;

i++)

PINSEL1=PINSEL1&

(2*(i-16))));

if(dir==1)IO0DIR=(IO0DIR&

(~num))|num;

elseIO0DIR=(IO0DIR&

(~num));

}

将P1口中,num为1的位初始化为GPIO。

{

(0x3ff<

16))!

=0)//P1.16~P1.25,由PINSEL2.3位控制

PINSEL2=PINSEL2&

(~(1<

3));

16))//P1.26~P1.31,由PINSEL2.2位控制

2));

if(dir==1)IO1DIR=(IO1DIR&

elseIO1DIR=(IO1DIR&

在P0口中,设置num为1的位输入,输出方式。

num需要初始化的管脚

**0——输入

1操作成功

**0操作失败

if((dir!

=0)&

&

(dir!

=1))return(0);

//1表示该位为输出模式

elseIO0DIR=(IO0DIR&

//0表示该位为输入模式

return

(1);

在P1口中,设置num为1的位输入,输出方式。

elseIO1DIR=(IO1DIR&

//0表示该位为输入模式

程序清单0.2GPIO软件包中定义的宏定义

#defineRead_P0()IO0PIN//将P0口的值读出

#defineRead_P1()IO1PIN//将P1口的值读出

#defineWrite_P0(value)IO0PIN=value//将value的值写入到P0口中

#defineWrite_P1(value)IO1PIN=value//将value的值写入到P1口中

#defineP0_GPIOSet(num)IO0SET=num//在P0口中,置位num为1的位所对应的管脚

#defineP0_GPIOClr(num)IO0CLR=num//在P0口中,清零num为1的位所对应的管脚

#defineP1_GPIOSet(num)IO1SET=num//在P1口中,置位num为1的位所对应的管脚

#defineP1_GPIOClr(num)IO1CLR=num//在P1口中,清零num为1的位所对应的管脚

 

1.2UART

1.2.1使用说明

1.初始化

对UARTn进行初始化。

表格11UART初始化

uint8UARTn_Ini(uint8n,uint32baud,uint8datab,

uint8stopb,uint8parity,uint8INT_En)

n0——UART01——UART1

baud串口通信波特率

datab数据位个数,有效值为:

5,6,7,8

stopb停止位个数,有效值为:

1,2

parity奇偶校验位

0——无校验

1——奇校验

2——偶校验

INT_En中断控制字节,按位操作

bit0RBR中断位,1——使能,0——禁止

bit1THRE中断位,1——使能,0——禁止

bit3RX线状态中断位,1——使能,0——禁止

0初始化失败

1初始化成功

最大通信速率为115200

UARTn_Ini(0,9600,8,1,0);

//UART0初始化,波特率9600,8位数据位

//1位停止位,无奇偶校验位

2.设置FIFO

对UARTn进行FIFO初始化。

表格12UARTFIFO初始化

voidSet_FIFO(uint8n,uint8data)

n0——UART01——UART1

dataFIFO触发字节设定,只能为1,2,8、14个字节

Set_FIFO(0,8);

//UART0FIFO初始化,8字节触发

3.发送1字节数据

从UART发送一字节数据。

表格13UART发送1字节数据

voidUARTn_SendByte(uint8n,uint8data)

data发送的数据

程序采用查询方式,并且没有使用FIFO

UARTn_SendByte(1,0x55);

//从UART1发送数据55H

4.发送多字节数据

从UART发送多字节数据。

表格14UART发送多字节数据

voidUARTn_SendData(uint8n,uint8*data_buf,

uint8count)

data_buf发送数据缓冲区首地址

count发送字节数

程序采用查询方式

UARTn_SendData(0,*data_buf,8);

//将data_buf缓冲区中的8个字节数据

//从UART0发送出去

5.接收数据

从UART接收数据。

表格15UART接收数据

voidUARTn_RcvData(uint8n,uint8*data_buf,

data_buf接收数据缓冲区首地址

count接收字节数

程序采用查询方式,存在死等待

UARTn_RcvData(0,*data_buf,8);

//从UART0接收8字节数据

//并保存到data_buf缓冲区中

1.2.2源码分析

程序清单0.3UART.c源代码

UART.c

LPC213xUARTn接口操作软件包。

程序中全部采用查询方式对UART进行操作。

#defineTXD01//TXD0是引脚P0.0的第2功能

#defineRXD0(1<

2)//RXD0是引脚P0.1的第2功能

#defineTXD1(1<

16)//TXD1是引脚P0.8的第2功能

#defineRXD1(1<

18)//RXD1是引脚P0.9的第2功能

uint8UARTn_Ini(uint8n,uint32baud,uint8datab,uint8stopb,

**uint8parity,uint8INT_En)

对UARTn进行初始化。

n0——UART01——UART1

**baud串口通信波特率

**datab数据位个数,有效值为:

**stopb停止位个数,有效值为:

**parity奇偶校验位,0-无校验

**1——奇校验

**2——偶校验

**3——强制为1

**4——强制为0

**INT_En中断控制字节,按位操作

**bit01——RBR中断使能,0——RBR中断禁止

**bit11——THRE中断使能,0——THRE中断禁止

**bit31——RX线状态中断使能,0——RX线状态中断禁止

0初始化失败

**1初始化成功

uint8UARTn_Ini(uint8n,uint32baud,uint8datab,uint8stopb,uint8parity,uint8INT_En)

uint32bak;

/*检查参数的合理性*/

if((n!

=0)&

(n!

=1))return(0);

//只有两个串口

if((baud==0)||(baud>

115200))return(0);

//波特率:

1~115200,否则出错

if((datab<

5)||(datab>

8))return(0);

//数据位数:

1~8,否则出错

if((stopb==0)||(stopb>

2))return(0);

//停止位:

1、2,否则出错

if(parity>

4)return(0);

//奇偶校验位有错

//设置UART引脚,且不影响其它引脚

if(n==0)PINSEL0=(PINSEL0&

(~0x0f))|TXD0|RXD0;

//设置UART0

elsePINSEL0=(PINSEL0&

(~(0x0f<

16)))|TXD1|RXD1;

//设置UART1

/*设置串口波特率*/

*(volatileuint8*)((&

U0LCR)+n*0x4000)=0x80;

//DLAB=1

U0DLM)+n*0x4000)=((Fpclk/16)/baud)/256;

U0DLL)+n*0x4000)=((Fpclk/16)/baud)%256;

/*设置串口模式*/

bak=datab-5;

//设置字长

if(stopb==2)

bak|=0x04;

//判断是否为2位停止位

if(parity!

=0)

{

parity-=1;

bak|=0x08;

}

bak|=parity<

4;

//设置奇偶校验位

U0LCR)+n*0x4000)=bak;

U0IER)+n*0x4000)=INT_En&

0x07;

//设置中断使能寄存器

voidSet_FIFO(uint8n,uint8data)

设置FIFO

**输 入:

**dataFIFO触发字节设定,只能为1,2,8、14个字节

**输 出:

0初始化失败

**1初始化成功

******

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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