/******************************************************************************************
** 文件名称: Time.c
** 文件描述: LPC2103 定时器操作软件包。
******************************************************************************************/
#include "config.h"
/*********************************************************************************************************
** 函数名称: uint8 T0CAP_Init(uint8 CAP_MODE,uint8 CAPn,uint8 Int_En)
** 功能描述: 定时器0捕获模式初始化
** 输 入: CAP_MODE 捕获方式,按位操作方式。
** bit0:1--CAP上跳沿捕获
** bit1:1--CAP下降沿捕获
** CAPn 捕获通道选择,0~2
** Int_En 中断使能
** 0:发生捕获事件时,不产生中断
** 1:发生捕获事件时,产生中断
** 输 出: 0 :初始化失败
** 1 :初始化成功
** 说明:函数中已经包含了引脚设置。
********************************************************************************************************/
uint8 T0CAP_Init(uint8 CAP_MODE,uint8 CAPn,uint8 Int_En)
{
if(CAP_MODE>3) return(0); //参数不合理,直接返回
if(CAPn>3) return(0);
if(Int_En>1) return(0);
switch(CAPn) //设置相关引脚
{
case 0: //CAP0.0--P0.2
PINSEL0 = PINSEL0 & (~(3<<4)) | (2<<4);
break;
case 1: //CAP0.1--P0.4
PINSEL0 = PINSEL0 & (~(3<<8)) | (2<<8);
break;
case 2: //CAP0.2--P0.6
PINSEL0 = PINSEL0 & (~(3<<12)) | (2<<12);
break;
default:
break;
}
T0TCR = 0x03; //在设置之前,先将定时器复位
T0IR = T0IR|(1<<(CAPn+4)); //清除中断标志位
//设置捕获控制寄存器,不会影响其它位
T0CCR = (T0CCR&(~(3<<(CAPn*3))))|(CAP_MODE<<(CAPn*3))|(Int_En<<(CAPn*3+2));
// 相关位清零 捕获方式位 中断位
T0TCR = 0x01; //启动定时器
return(1);
}
/*********************************************************************************************************
** 函数名称: uint8 T1CAP_Init(uint8 CAP_MODE,uint8 CAPn,uint8 Int_En)
** 功能描述: 定时器1捕获模式初始化
** 输 入: CAP_MODE 捕获方式,按位操作方式。
** bit0:1--CAP上跳沿捕获
** bit1:1--CAP下降沿捕获
** CAPn 捕获通道选择,0~3
** Int_En 中断使能
** 0:发生捕获事件时,不产生中断
** 1:发生捕获事件时,产生中断
** 输 出: 0 :初始化失败
** 1 :初始化成功
** 说明:函数中已经包含了引脚设置。
********************************************************************************************************/
uint8 T1CAP_Init(uint8 CAP_MODE,uint8 CAPn,uint8 Int_En)
{
if(CAP_MODE>3) return(0); //参数不合理,直接返回
if(CAPn>3) return(0);
if(Int_En>1) return(0);
switch(CAPn) //设置相关引脚
{
case 0: //CAP1.0--P0.10
PINSEL0 = PINSEL0 & (~(3<<20)) | (2<<20);
break;
case 1: //CAP1.1--P0.11
PINSEL0 = PINSEL0 & (~(3<<22)) | (2<<22);
break;
case 2: //CAP1.2--P0.17
PINSEL1 = PINSEL1 & (~(3<<2)) | (2<<2);
break;
case 3: //CAP1.2--P0.18
PINSEL1 = PINSEL1 & (~(3<<4)) | (2<<4);
break;
default:
break;
}
T1TCR = 0x03; //在设置之前,先将定时器复位
T1IR = T1IR|(1<<(CAPn+4)); //清除中断标志位
//设置捕获控制寄存器,不会影响其它位
T1CCR = (T1CCR&(~(3<<(CAPn*3))))|(CAP_MODE<<(CAPn*3))|(Int_En<<(CAPn*3+2));
// 相关位清零 捕获方式位 中断位
T1TCR = 0x01; //启动定时器
return(1);
}
/*********************************************************************************************************
** 函数名称: uint8 T2CAP_Init(uint8 CAP_MODE,uint8 CAPn,uint8 Int_En)
** 功能描述: 定时器1捕获模式初始化
** 输 入: CAP_MODE 捕获方式,按位操作方式。
** bit0:1--CAP上跳沿捕获
** bit1:1--CAP下降沿捕获
** CAPn 捕获通道选择,0~2
** Int_En 中断使能
** 0:发生捕获事件时,不产生中断
** 1:发生捕获事件时,产生中断
** 输 出: 0 :初始化失败
** 1 :初始化成功
** 说明:函数中已经包含了引脚设置。
********************************************************************************************************/
uint8 T2CAP_Init(uint8 CAP_MODE,uint8 CAPn,uint8 Int_En)
{
if(CAP_MODE>3) return(0); //参数不合理,直接返回
if(CAPn>2) return(0);
if(Int_En>1) return(0);
switch(CAPn) //设置相关引脚
{
case 0: //CAP2.0--P0.27
PINSEL1 = PINSEL1 & (~(3<<22)) | (2<<22);
break;
case 1: //CAP2.1--P0.28
PINSEL1 = PINSEL1 & (~(3<<24)) | (2<<24);
break;
case 2: //CAP2.2--P0.29
PINSEL1 = PINSEL1 & (~(3<<26)) | (2<<26);
break;
default:
break;
}
T2TCR = 0x03; //在设置之前,先将定时器复位
T2IR = T2IR|(1<<(CAPn+4)); //清除中断标志位
//设置捕获控制寄存器,不会影响其它位
T2CCR = (T2CCR&(~(3<<(CAPn*3))))|(CAP_MODE<<(CAPn*3))|(Int_En<<(CAPn*3+2));
// 相关位清零 捕获方式位 中断位
T2TCR = 0x01; //启动定时器
return(1);
}
/*********************************************************************************************************
** 函数名称: uint8 T0MAT_Init(uint32 time,uint32 PR_data,uint8 T_MODE,uint8 EXT_MODE,uint8 MATn,uint8 Int_En)
** 功能描述: 定时器0匹配模式初始化
** 输 入: time 匹配时间,该值会直接写入到匹配寄存器中
** PR_data 预分频寄存器的值
** T_MODE 匹配控制模式
** 0:匹配时,定时器复位
** 1:匹配时,定时器停止
** EXT_MODE 匹配时,外部输出控制
** 0:不执行任何动作
** 1:外部匹配输出0
** 2:外部匹配输出1
** 3:外部匹配输出翻转
** MATn 匹配通道选择,0~2
** Int_En 中断使能
** 0:发生匹配事件时,不产生中断
** 1:发生匹配事件时,产生中断
** 输 出: 0 :初始化失败
** 1 :初始化成功
** 说明:使用中,如果匹配时,匹配引脚有动作,那么,程序中已经将相关引脚进行了初始化
********************************************************************************************************/
uint8 T0MAT_Init(uint32 time,uint32 PR_data,uint8 T_MODE,uint8 EXT_MODE,uint8 MATn,uint8 Int_En)
{
if(T_MODE>1) return(0); //参数不合理,直接返回
if(EXT_MODE>3) return(0);
if(MATn>3) return(0);
if(Int_En>1) return(0);
if(EXT_MODE) //设置相关引脚
{
switch(MATn)
{
case 0: //设置MAT0.0--P0.3
PINSEL0 = PINSEL0 & (~(3<<6)) | (2<<6);
break;
case 1: //设置MAT0.1--P0.5
PINSEL0 = PINSEL0 & (~(3<<10)) | (2<<10);
break;
case 2: //设置MAT0.2--P0.16
PINSEL1 = PINSEL1 & (~0x03) | 0x02;
break;
default:
break;
}
}
T0TCR = 0x03; //在设置之前,先将定时器复位
T0IR = T0IR|(1<<MATn); //清除中断标志位
T0PR = PR_data; //设置预分频器
*(uint32 *)((&T0MR0)+MATn) = time; //设置匹配寄存器
T0MCR = T0MCR&(~(7<<(MATn*3)))|(1<<(MATn*3+1+T_MODE))|(Int_En<<(MATn*3));
// 相关位清零 定时器匹配控制位 中断位
T0EMR = T0EMR&(~(3<<(MATn*2+4)))|(EXT_MODE<<(MATn*2+4));
T0TCR = 0x01; //重新启动定时器
return(1);
}
/*********************************************************************************************************
** 函数名称: uint8 T1MAT_Init(uint32 time,uint32 PR_data,uint8 T_MODE,uint8 EXT_MODE,uint8 MATn,uint8 Int_En)
** 功能描述: 定时器1匹配模式初始化
** 输 入: time 匹配时间,该值会直接写入到匹配寄存器中
** PR_data 预分频寄存器的值
** T_MODE 匹配控制模式
** 0:匹配时,定时器复位
** 1:匹配时,定时器停止
** EXT_MODE 匹配时,外部输出控制
** 0:不执行任何动作
** 1:外部匹配输出0
** 2:外部匹配输出1
** 3:外部匹配输出翻转
** MATn 匹配通道选择,0~3
** Int_En 中断使能
** 0:发生匹配事件时,不产生中断
** 1:发生匹配事件时,产生中断
** 输 出: 0 :初始化失败
** 1 :初始化成功
** 说明:使用中,如果匹配时,匹配引脚有动作,那么,程序中已经将相关引脚进行了初始化
********************************************************************************************************/
uint8 T1MAT_Init(uint32 time,uint32 PR_data,uint8 T_MODE,uint8 EXT_MODE,uint8 MATn,uint8 Int_En)
{
if(T_MODE>1) return(0); //参数不合理,直接返回
if(EXT_MODE>3) return(0);
if(MATn>3) return(0);
if(Int_En>1) return(0);
if(EXT_MODE) //设置相关引脚
{
switch(MATn)
{
case 0: //设置MAT1.0--P0.12
P
没有合适的资源?快使用搜索试试~ 我知道了~
LPC2103库文件包
共25个文件
h:13个
c:12个
5星 · 超过95%的资源 需积分: 10 49 下载量 38 浏览量
2010-07-20
12:15:20
上传
评论 2
收藏 30KB RAR 举报
温馨提示
LPC2013各种外设的驱动,包括UART,SPI,IIC,ADC,RTC等等。
资源推荐
资源详情
资源评论
收起资源包目录
LPC2103_Lib.rar (25个子文件)
SPI
SPI.c 3KB
SPI.h 2KB
RTC
RTC.c 8KB
RTC.h 6KB
WDT
WatchDog.c 3KB
WatchDog.h 3KB
IAP
IAP.c 6KB
IAP.h 5KB
I2C
I2C.c 15KB
I2C.h 5KB
ADC
ADC.h 4KB
ADC.c 8KB
GPIO
Enhance_GPIO
Enhance_GPIO.c 2KB
Enhance_GPIO.h 2KB
Legacy_GPIO
Legacy_GPIO.h 2KB
Legacy_GPIO.c 2KB
SSP
SSP.h 2KB
SSP.c 3KB
ExtInterrupt
ExtInterrupt.h 2KB
ExtInterrupt.c 3KB
UART
UART.h 4KB
UART.c 8KB
ISR
ISR.h 1KB
Time
Time.c 24KB
Time.h 13KB
共 25 条
- 1
资源评论
- taoxianchong2013-05-04版本正确,谢谢楼主!
- 1234566882018-09-17可以用,学习学习,感谢分享!
- lpf37172012-09-28很齐全的库文件
- loveboon12014-12-18必须满分,正好要做IIC ,内容很全,谢谢分享 。赞一个
sigra
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功