Files
RCU_BUS485_PLC_MASTER/Source/SYSTEM/inc/pwm.h
yanghongfeng f25132cbe3 修复开关控制组控的控制异常问题
修改PB开关状态组控处理,解决后32路的开关状态会复用上前32个回路的数据
2026-01-19 15:35:56 +08:00

80 lines
2.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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