/******************** LQ_K60_函数库 v1.0 ********************
* 文件名 :Lptmr.h
* 功能 :低功耗计数器(定时器)
*/
#ifndef __LPTMR_H__
#define __LPTMR_H__
/**
* @brief LPTMR脉冲计数输入管脚选项
*/
typedef enum
{
//只有1、2管脚,并没有0、3管脚
LPT0_ALT1 = 1, // PTA19
LPT0_ALT2 = 2 // PTC5
} LPT0_ALTn;
/**
* @brief LPTMR脉冲计数触发方式
*/
typedef enum LPT_CFG
{
LPT_Rising = 0, //上升沿触发
LPT_Falling = 1 //下降沿触发
} LPT_CFG;
#define LPTMR_Flag_Clear() (LPTMR0_CSR |= LPTMR_CSR_TCF_MASK) //清除LPT比较标志位
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**************************************************************************************************************************
LPTMR延时函数
**************************************************************************************************************************/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------*
//函数名: delayms
//功 能: 精确延时函数
//参 数: ms : 延时时间
//返 回: 无
//简 例: delayms(1000);
//注 意: 使用延时的时候不能使用LPTMR别的功能
//-------------------------------------------------------------------------*
void delayms(u16 ms);
//-------------------------------------------------------------------------*
//函数名: LPTMR_delay_ms
//功 能: LPTMR延时函数(ms)
//参 数: ms 毫秒
//返 回: 无
//简 例: LPTMR_delay_ms(32); // LPTMR 延时32ms
//-------------------------------------------------------------------------*
void LPTMR_Delayms(uint16 ms);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**************************************************************************************************************************
LPTMR脉冲计数函数
**************************************************************************************************************************/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------*
//函数名: LPTMR_pulse_init
//功 能: LPTMR脉冲计数初始化
//参 数: LPT0_ALTn:LPTMR脉冲计数管脚
// count :LPTMR脉冲比较值
// LPT_CFG :LPTMR脉冲计数方式:上升沿计数或下降沿计数
//返 回: 无
//简 例: LPTMR_pulse_init(LPT0_ALT1,32768,LPT_Rising);
//-------------------------------------------------------------------------*
void LPTMR_PulseInit(LPT0_ALTn altn, uint16 count, LPT_CFG cfg);
//-------------------------------------------------------------------------*
//函数名: LPTMR_pulse_get
//功 能: 获取LPTMR脉冲计数值
//返 回: 脉冲计数值
//简 例: 无
//-------------------------------------------------------------------------*
uint16_t LPTMR_PulseGet(void);
//-------------------------------------------------------------------------*
//函数名: LPTMR_pulse_clean
//功 能: 清空LPTMR脉冲计数
//参 数: 无
//返 回: 无
//简 例: 无
//-------------------------------------------------------------------------*
void LPTMR_PulseClean(void);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**************************************************************************************************************************
LPTMR程序计时器函数
**************************************************************************************************************************/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------*
//函数名: LPTMR计时函数(ms,计时时间最大为65534ms)
//功 能: LPTMR计时函数
//参 数: 无
//返 回: 无
//简 例:
/* void my_delay(uint32 time)
{
volatile uint32 i = time;
while(i--);
}
LPTMR_TimeStartms();
my_delay(600000);
i = LPTMR_TimeGetms();
if(i == ~0)
{
UART_Put_Str("\n计时时间超时");
}
else
{
UART_Put_Str("\n计时时间为:%dms",i);
}
*/
//-------------------------------------------------------------------------*
void LPTMR_TimeStartms(void);
//-------------------------------------------------------------------------*
//函数名: LPTMR_time_get_ms
//功 能: 获取LPTMR计时时间(ms)
//参 数: 无
//返 回: 计时时间(返回值为 ~0 表示计时超时,其他值在 0~ 65534ms 区间内 )
//简 例: 参考 LPTMR_time_start_ms 的调用例子
//-------------------------------------------------------------------------*
uint32_t LPTMR_TimeGetms(void);
//-------------------------------------------------------------------------*
//函数名: LPTMR计时函数(us,计时时间最大为41942us)
//功 能: LPTMR计时函数
//参 数: 无
//返 回: 无
//简 例:
/* void my_delay(uint32 time)
{
volatile uint32 i = time;
while(i--);
}
uint32 i;
LPTMR_TimeStartus();
my_delay(5894);
i = LPTMR_TimeGetus();
if(i == ~0)
{
UART_Put_Str("\n计时时间超时");
}
else
{
UART_Put_Str("\n计时时间为:%dus",i);
}
*/
//-------------------------------------------------------------------------*
void LPTMR_TimeStartus(void);
//-------------------------------------------------------------------------*
//函数名: LPTMR_TimeGetus
//功 能: 获取LPTMR计时时间(us)
//参 数: 无
//返 回: 计时时间(返回值为 ~0 表示计时超时,其他值在 0~ 41942us 区间内 )
//简 例: 参考 LPTMR_TimeGetus 的调用例子
//-------------------------------------------------------------------------*
uint32_t LPTMR_TimeGetus(void);
//-------------------------------------------------------------------------*
//函数名: LPTMR_time_close
//功 能: 关闭 LPTMR计时
//参 数: 无
//返 回: 无
//简 例: 无
//-------------------------------------------------------------------------*
void LPTMR_TimeClose();
#endif
k60驱动代码学习(9)
猜你喜欢
转载自blog.csdn.net/weixin_44146373/article/details/104213465
今日推荐
周排行