67 lines
1.3 KiB
C
67 lines
1.3 KiB
C
#include "main.h"
|
|
#include "relay_task.h"
|
|
|
|
#define RELAY1_ON() LL_TIM_OC_SetCompareCH1(TIM2,255)
|
|
#define RELAY1_OFF() LL_TIM_OC_SetCompareCH1(TIM2,0)
|
|
#define RELAY1_HOLD() LL_TIM_OC_SetCompareCH1(TIM2,200)
|
|
|
|
#define RELAY2_ON() LL_TIM_OC_SetCompareCH1(TIM12,255)
|
|
#define RELAY2_OFF() LL_TIM_OC_SetCompareCH1(TIM12,0)
|
|
#define RELAY2_HOLD() LL_TIM_OC_SetCompareCH1(TIM12,200)
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char fault;
|
|
unsigned char alarm;
|
|
unsigned char dump0;
|
|
unsigned char dump1;
|
|
}TSys_Relay_State_Struct;
|
|
|
|
TSys_Relay_State_Struct relay_state = {0,0};
|
|
|
|
void set_Relay_alarm_state(unsigned char aSta)
|
|
{
|
|
relay_state.alarm = aSta;
|
|
}
|
|
|
|
void set_Relay_fault_state(unsigned char aSta)
|
|
{
|
|
relay_state.fault = aSta;
|
|
}
|
|
|
|
void alarm_relay_output_handle(void)
|
|
{
|
|
static unsigned int relay_tick = 0;
|
|
|
|
if(relay_state.alarm){
|
|
if(relay_tick < 200)relay_tick++;
|
|
}else{
|
|
relay_tick = 0;
|
|
}
|
|
|
|
if(0 == relay_tick)RELAY1_OFF();
|
|
else if(relay_tick < 100)RELAY1_ON();
|
|
else RELAY1_HOLD();
|
|
}
|
|
|
|
void fault_relay_output_handle(void)
|
|
{
|
|
static unsigned int relay_tick = 0;
|
|
|
|
if(relay_state.fault){
|
|
if(relay_tick < 200)relay_tick++;
|
|
}else{
|
|
relay_tick = 0;
|
|
}
|
|
|
|
if(0 == relay_tick)RELAY2_OFF();
|
|
else if(relay_tick < 100)RELAY2_ON();
|
|
else RELAY2_HOLD();
|
|
}
|
|
|
|
void relay_output_handle(void)//100ms
|
|
{
|
|
alarm_relay_output_handle();
|
|
fault_relay_output_handle();
|
|
}
|