/***********************************************************************
 * Copyright (c)  2017 - 2022, Unicmicro Co.,Ltd .
 * All rights reserved.
 * Filename    : btimer23.h
 * Description : btimer23 driver header file
 * Author(s)   : Sissi
 * version     : V1.0
 * Modify date : 2022-08-08
 ***********************************************************************/
#ifndef __BTIMER23_H__
#define __BTIMER23_H__
 
#include  "system_um321xF.h"

#define BTIMER23_IRQ_ENABLE 1

#define BTIMER23_IRQ_CLEAR	0xF	

#define BTIMER2_UE_IRQ 	  	0
#define BTIMER2_CNT_IRQ  	1
#define BTIMER3_UE_IRQ    	2
#define BTIMER3_CNT_IRQ   	3

#define VAL_BTIMER2_UIE   	(1<<0)			//CNT2 Update事件中断
#define VAL_BTIMER2_CNIE   	(1<<1)			//比较2中断
#define VAL_BTIMER3_UIE   	(1<<2)			//CNT3 Update事件中断
#define VAL_BTIMER3_CNIE   	(1<<3)			//比较3中断

#define BTIMER23_CLKEN  	(1<<20)			//BTIMER23模块时钟使能
#define BTIMER23_RESET		(1<<20)			//BTIMER23模块复位使能

#define BTIMER23_CEN_DISABLE (0<<0)			//BTIMER23计数器禁止
#define BTIMER23_CEN_ENABLE  (1<<0)			//BTIMER23计数器使能

/************************************************************************
 * Function   	: btimer2_count_init
 * Description	: btimer2 count 初始化
 * Input 		: uint16_t arr 		重载值设置
 *			  	  uint16_t psc 		预分频值设置
 * Output 		: none
 * Return		: none
 ************************************************************************/
void btimer2_count_init(uint16_t arr, uint16_t psc);

/************************************************************************
 * Function   	: btimer3_count_init
 * Description	: btimer3 count 初始化
 * Input 		: uint16_t arr 		  重载值设置
 *			  	  uint16_t psc 		  预分频值设置
 * Output 		: none
 * Return		: none
 ************************************************************************/
void btimer3_count_init(uint16_t arr, uint16_t psc);

/************************************************************************
 * Function   	: btimer2_pwm_cn_init
 * Description	: btimer2 count pwm输出初始化
 * Input 		: uint16_t arr 		重载值设置
 *				  uint16_t ccr 		比较值设置
 *			  	  uint16_t psc 		预分频值设置
 * Output 		: none
 * Return		: none
 ************************************************************************/
void btimer2_pwm_cn_init(uint16_t arr,uint16_t ccr,uint16_t psc);

/************************************************************************
 * Function   	: btimer3_pwm_cn_init
 * Description	: btimer3 count pwn输出初始化
 * Input 		: uint16_t arr 		重载值设置
 *				  uint16_t ccr 		比较值设置
 *			  	  uint16_t psc 		预分频值设置
 * Output 		: none
 * Return		: none
 ************************************************************************/
void btimer3_pwm_cn_init(uint16_t arr,uint16_t ccr,uint16_t psc);

/************************************************************************
 * Function   	: btimer23_irq_init
 * Description	: btimer23 中断初始化
 * Input 		: uint8_t irq_enable		btimer23 中断使能开关 1：使能 0：禁止
 *				  uint8_t btimer_irq_type 	btimer23 中断类型选择
 *            	  void (*pfunc)()			bitmer23 中断回调函数
 * Output 		: none
 * Return		: none
 ************************************************************************/	
void btimer23_irq_init(uint8_t irq_enable,uint8_t btimer_irq_type,void (*pfunc)());

#endif
