80 lines
2.5 KiB
C
80 lines
2.5 KiB
C
|
|
#ifndef _PWM_H_
|
|||
|
|
#define _PWM_H_
|
|||
|
|
|
|||
|
|
#include "apt32f102.h"
|
|||
|
|
#include "apt32f102_ept.h"
|
|||
|
|
|
|||
|
|
#define PWM_OUT_VAL_MAX 3000
|
|||
|
|
#define PWM_OUT_VAL_MIN 0
|
|||
|
|
#define BRIGHTNESS_MAX 100
|
|||
|
|
#define BRIGHTNESS_MIN 0
|
|||
|
|
|
|||
|
|
#define BRIGHTNESS_UP_LIMIT 100
|
|||
|
|
#define BRIGHTNESS_DOWN_LIMIT 0
|
|||
|
|
|
|||
|
|
typedef enum
|
|||
|
|
{
|
|||
|
|
PWM_OUT_CH1 = 0x00,
|
|||
|
|
PWM_OUT_CH2,
|
|||
|
|
PWM_OUT_CH3,
|
|||
|
|
PWM_OUT_CH4,
|
|||
|
|
PWM_OUT_CH_MAX,
|
|||
|
|
}PWM_CHN_e;
|
|||
|
|
|
|||
|
|
typedef enum{
|
|||
|
|
PWMA_Decreasing = 0, //PWM调节方向 - 递减
|
|||
|
|
PWMA_Ascending, //PWM调节方向 - 递增
|
|||
|
|
PWMA_Nochange, //PWM调节方向 - 不调节
|
|||
|
|
}PWM_ADJUST_ORIENTATION;
|
|||
|
|
|
|||
|
|
typedef struct{
|
|||
|
|
U8_T irqEnable; //PWM控制中断使能状态
|
|||
|
|
U8_T allBrightness; //全局调光
|
|||
|
|
U8_T allBrightnessUpLimit; //全局调光上限百分比
|
|||
|
|
U8_T allBrightnessDownLimit; //全局调光下限百分比
|
|||
|
|
|
|||
|
|
U8_T brightnessCurr[PWM_OUT_CH_MAX]; //当前PWM 百分比亮度
|
|||
|
|
U8_T switchState[PWM_OUT_CH_MAX];
|
|||
|
|
U8_T controlFlag[PWM_OUT_CH_MAX];
|
|||
|
|
U8_T addOrDecFlag[PWM_OUT_CH_MAX];
|
|||
|
|
|
|||
|
|
U16_T allPwmUpLimit; //全局可调上限
|
|||
|
|
U16_T allPwmDownLimit; //全局可调下限
|
|||
|
|
U16_T pwmValCurr[PWM_OUT_CH_MAX]; //当前PWM
|
|||
|
|
U16_T pwmValTarget[PWM_OUT_CH_MAX]; //目标PWM
|
|||
|
|
U16_T gradualTime[PWM_OUT_CH_MAX]; //调节时间 , 单位:ms
|
|||
|
|
|
|||
|
|
float pwmStep[PWM_OUT_CH_MAX]; //步进值
|
|||
|
|
float pwmFloatValCurr[PWM_OUT_CH_MAX]; //当前PWM - 浮点类型
|
|||
|
|
|
|||
|
|
}PWM_CONTROL_T;
|
|||
|
|
|
|||
|
|
typedef struct{
|
|||
|
|
U8_T enable[PWM_OUT_CH_MAX]; //自动调节使能状态 0x01:使能,0x00:未使能
|
|||
|
|
U8_T adjMode[PWM_OUT_CH_MAX]; //0x00:调节到顶端停止 0x01:循环调节 0x02:停止调节
|
|||
|
|
U8_T adjDir[PWM_OUT_CH_MAX]; //0x00:递减 0x01:递增 0x02:与上次命令相反
|
|||
|
|
float pwmStep[PWM_OUT_CH_MAX]; //PWM步进值
|
|||
|
|
U32_T pwmStepTime[PWM_OUT_CH_MAX]; //步进时间 , 单位:ms
|
|||
|
|
U32_T pwmStepTick[PWM_OUT_CH_MAX]; //步进时间戳 , 单位:ms
|
|||
|
|
}PWM_AUTO_ADJUST_T;
|
|||
|
|
|
|||
|
|
extern PWM_CONTROL_T g_pwm;
|
|||
|
|
extern PWM_AUTO_ADJUST_T g_pwmAutoAdj;
|
|||
|
|
|
|||
|
|
void PWM_Init(void);
|
|||
|
|
|
|||
|
|
void PWM_SetUpLimitVal(U8_T val);
|
|||
|
|
void PWM_SetDownLimitVal(U8_T val);
|
|||
|
|
void Pwm_SetAllBrightness(U8_T val);
|
|||
|
|
|
|||
|
|
void PWM_SetOutDuty(U8_T index,U16_T val);
|
|||
|
|
void PWM_SetCHGradualTime(U8_T index, U16_T val);
|
|||
|
|
void Pwm_SetOnOffState(U8_T index, U8_T state);
|
|||
|
|
void PWM_SetOutBrightness(U8_T index, U8_T brightness);
|
|||
|
|
void PWM_SetAutoAdjust(U8_T index,U8_T mode,U8_T adj,U16_T adj_time);
|
|||
|
|
void PWM_Timer_Enable(void);
|
|||
|
|
void PWM_Timer_Disable(void);
|
|||
|
|
void PWM_Timer_1ms_Task(void);
|
|||
|
|
|
|||
|
|
#endif
|