#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