#ifndef __PTZ_HEAT_RESISTOR_H_ #define __PTZ_HEAT_RESISTOR_H_ #include "gd32f4xx.h" //两个加热电阻的型号阻值都是一模一样的 #define PTZ_HEAT_RESISTOR_A_PORT GPIOE #define PTZ_HEAT_RESISTOR_A_PIN GPIO_PIN_0 #define PTZ_HEAT_RESISTOR_A_ON (gpio_bit_set(PTZ_HEAT_RESISTOR_A_PORT, PTZ_HEAT_RESISTOR_A_PIN)) #define PTZ_HEAT_RESISTOR_A_OFF (gpio_bit_reset(PTZ_HEAT_RESISTOR_A_PORT, PTZ_HEAT_RESISTOR_A_PIN)) #define PTZ_HEAT_RESISTOR_B_PORT GPIOE #define PTZ_HEAT_RESISTOR_B_PIN GPIO_PIN_1 #define PTZ_HEAT_RESISTOR_B_ON (gpio_bit_set(PTZ_HEAT_RESISTOR_B_PORT, PTZ_HEAT_RESISTOR_B_PIN)) #define PTZ_HEAT_RESISTOR_B_OFF (gpio_bit_reset(PTZ_HEAT_RESISTOR_B_PORT, PTZ_HEAT_RESISTOR_B_PIN)) #define PTZ_HEAT_RESISTOR_R 24.0 //电阻阻值 单位: 欧姆 Ω #define PTZ_HEAT_RESISTOR_I_MAX 1.0 //电阻允许通过的最大电流 单位:安培 A #define PTZ_HEAT_RESISTOR_V_MAX 24.0//电阻两端最大的电压 单位:伏 V #define PTZ_HEAT_RESISTOR_PWM_T 20 //加热PWM的总周期 单位:毫秒 ms #define PTZ_HEAT_RESISTOR_TEMP 30.0//25.0//加热电阻能够被打开的最高温度 //即云台内部温度超过PTZ_HEAT_RESISTOR_TEMP //就自动关闭加热或者无法打开加热功能 //关闭加热 #define PTZ_HEAT_RESISTOR_OFF_0 0 #define PTZ_HEAT_RESISTOR_OFF_1 1 //打开加热 #define PTZ_HEAT_RESISTOR_ON 2 //打开加热并输入PWM波 #define PTZ_HEAT_RESISTOR_ON_PWM 3 //#define PTZ_TMP75_COLLECT_NUM 5 //云台电阻加热 /*加热电阻*/ typedef struct _HeatResistor_ { //加热电阻1 unsigned char heat_switch; //加热开关 unsigned short int pwm_t; //电阻PWM控制周期 unsigned short int pwm_power_on_t;//PWM电源打开时间 unsigned short int pwm_power_off_t;//PWM电源关闭时间 float pwm_duty_cycle;//占空比 float pwm_duty_cycle_max;//允许的最大占空比 unsigned short int heat_timer_min;//加热总时间计时,单位分钟 unsigned short int heat_timer_s;//加热总时间计时,单位秒 unsigned short int heat_timer_ms;//加热总时间计时,单位毫秒 float resistor_v;//电阻两端电压 float resistor_i;//通过电阻两端电流 }HeatResistor; void ptz_heat_resistor_switch(PTZ_DATA_PACK *pack); void init_heat_resistor_module(); #endif