k60驱动代码学习(9)

/******************** 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 

发布了69 篇原创文章 · 获赞 28 · 访问量 9906

猜你喜欢

转载自blog.csdn.net/weixin_44146373/article/details/104213465