/***********************************************************************************************************
 * Copyright (c)  2021 - 2022, Unicmicro Co.,Ltd .
 * All rights reserved.
 * Filename    : lptimer.h
 * Description : lptimer driver header file
 * Author(s)   : zhilan
 * Version     : V1.0
 * Modify date : 2022-05-09
 ***********************************************************************************************************/
#ifndef __LPTIMER_H__
#define __LPTIMER_H__

#include "config.h"

#ifdef UM2082F08_USING_LPTIMER

#define LPTIE_COMP                   	(0)      															/* 中断使能：比较匹配中断使能 */
#define LPTIE_OV                     	(1)      															/* 中断使能：计数器溢出中断使能 */
																	          																	
#define LPTIMER_LSCLK                	(0)      															/* 时钟源选择：RCL低速时钟*/
#define LPTIMER_RCLP                 	(1)      															/* 时钟源选择：clk_1hz时钟*/
#define LPTIMER_SYSCLK               	(2)      															/* 时钟源选择：系统时钟*/
#define LPTIMER_LPTIN                	(3)      															/* 时钟源选择：外部输入时钟*/
																										               																	
#define DIV1                         	(0)																
#define DIV2                         	(1)																
#define DIV4                         	(2)																
#define DIV8                         	(3)																
#define DIV16                        	(4)																
#define DIV32                        	(5)																
#define DIV64                        	(6)																
#define DIV128                       	(7)																
                         																	
#define HIGH                   		 	(1)      															
#define LOW                     	 	(0)      															

#define RISE_EDGE                	 	(0)      															
#define FALL_EDGE                    	(1)  																
#define DOUBLE_EDGE                  	(2)																
																										                       																	
#define TIMER_TMODE                  	(0)      															/* 普通定时器模式 */
#define EXTCOUNT_TMODE               	(2)      															/* 外部异步脉冲计数模式 */
																										                    																	
#define CONTINUOUS_MODE              	(0)      															/* 连续计数模式 */
#define SINGLE_MODE                  	(1)      															/* 单次计数模式 */

void lptimer_timer_init(uint8_t clk_src,uint8_t clk_div,uint16_t target);

void lptimer_pwm_init(uint8_t clk_src,uint8_t clk_div,uint16_t target,uint16_t cmp,uint8_t level);

void lptimer_extcount_init(uint8_t clk_div,uint16_t target);

void lptimer_irq_init(em_enable_t enable,uint8_t ie,void (*pfunc)());

void lptimer_on(void);

void lptimer_off(void);

uint16_t get_lptimer_cnt(void);

#endif
#endif
