


#ifndef __CH57x_PWM_H__
#define __CH57x_PWM_H__

#ifdef __cplusplus
 extern "C" {
#endif

#include "CH579SFR.h"
#include "core_cm0.h"

/**
  * @brief  channel of PWM define
  */

#define	CH_PWM4 	0x01				// PWM4 通道
#define	CH_PWM5		0x02				// PWM5 通道
#define	CH_PWM6		0x04				// PWM6 通道
#define	CH_PWM7		0x08				// PWM7 通道
#define	CH_PWM8		0x10				// PWM8 通道
#define	CH_PWM9		0x20				// PWM9 通道
#define	CH_PWM10	0x40				// PWM10 通道
#define	CH_PWM11	0x80				// PWM11 通道
	


/**
  * @brief  channel of PWM define
  */
typedef enum
{
	High_Level = 0,						// 默认低电平，高电平有效
	Low_Level,							// 默认高电平，低电平有效
}PWMX_PolarTypeDef;	 
	 

/**
  * @brief  Configuration PWM4_11 Cycle size
  */
typedef enum
{
	PWMX_Cycle_256 = 0,					// 256 个PWMX周期
	PWMX_Cycle_255,						// 255 个PWMX周期
	PWMX_Cycle_128,						// 128 个PWMX周期
	PWMX_Cycle_127,						// 127 个PWMX周期
	PWMX_Cycle_64,						// 64 个PWMX周期
	PWMX_Cycle_63,						// 63 个PWMX周期
	PWMX_Cycle_32,						// 32 个PWMX周期
	PWMX_Cycle_31,						// 31 个PWMX周期
}PWMX_CycleTypeDef;	 
	 

#define PWMX_CLKCfg( d )			(R8_PWM_CLOCK_DIV=d)			    /* PWM4-PWM11 通道基准时钟配置，= d*Tsys */
void PWMX_CycleCfg( PWMX_CycleTypeDef cyc );							/* PWM4-PWM11 通道输出波形周期配置 */

#define PWM4_ActDataWidth( d )		(R8_PWM4_DATA = d)					/* PWM4 有效数据脉宽 */
#define PWM5_ActDataWidth( d )		(R8_PWM5_DATA = d)					/* PWM5 有效数据脉宽 */
#define PWM6_ActDataWidth( d )		(R8_PWM6_DATA = d)					/* PWM6 有效数据脉宽 */
#define PWM7_ActDataWidth( d )		(R8_PWM7_DATA = d)					/* PWM7 有效数据脉宽 */
#define PWM8_ActDataWidth( d )		(R8_PWM8_DATA = d)					/* PWM8 有效数据脉宽 */
#define PWM9_ActDataWidth( d )		(R8_PWM9_DATA = d)					/* PWM9 有效数据脉宽 */
#define PWM10_ActDataWidth( d )		(R8_PWM10_DATA = d)					/* PWM10 有效数据脉宽 */
#define PWM11_ActDataWidth( d )		(R8_PWM11_DATA = d)					/* PWM11 有效数据脉宽 */

// 占空比 = 数据有效脉宽/波形周期
void PWMX_ACTOUT( UINT8 ch, UINT8 da, PWMX_PolarTypeDef pr, UINT8 s);	/* PWM4-PWM11通道输出波形配置 */
void PWMX_AlterOutCfg( UINT8 ch, UINT8 s);			/* PWM 交替输出模式配置 */




	 
#ifdef __cplusplus
}
#endif

#endif  // __CH57x_PWM_H__	

