#include "relay.h" #include "All_define.h" struct_realy_t struct_realy; void Relay_Init(void) { rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOC); gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1 | GPIO_PIN_6); gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); gpio_bit_reset(GPIOA, GPIO_PIN_1); gpio_bit_reset(GPIOC, GPIO_PIN_0); gpio_bit_reset(GPIOC, GPIO_PIN_1); gpio_bit_reset(GPIOC, GPIO_PIN_2); gpio_bit_reset(GPIOC, GPIO_PIN_3); /*GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_PIN = GPIO_PIN_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_PIN = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_PIN_1); GPIO_ResetBits(GPIOC,GPIO_PIN_0); GPIO_ResetBits(GPIOC,GPIO_PIN_1); GPIO_ResetBits(GPIOC,GPIO_PIN_2); GPIO_ResetBits(GPIOC,GPIO_PIN_3); */ } void Relay_Set(Enum_relay_t Enum_relay, uint8_t status) { switch (Enum_relay) { case HK: { if (status) gpio_bit_set(GPIOA, GPIO_PIN_4); else gpio_bit_reset(GPIOA, GPIO_PIN_4); } break; case CK: { if (status) gpio_bit_set(GPIOC, GPIO_PIN_1); else gpio_bit_reset(GPIOC, GPIO_PIN_1); } break; case FS1: { if (status) gpio_bit_set(GPIOA, GPIO_PIN_1); else gpio_bit_reset(GPIOA, GPIO_PIN_1); } break; case FS2: { if (status) gpio_bit_set(GPIOC, GPIO_PIN_3); else gpio_bit_reset(GPIOC, GPIO_PIN_3); } break; case FS3: { if (status) gpio_bit_set(GPIOC, GPIO_PIN_0); else gpio_bit_reset(GPIOC, GPIO_PIN_0); } break; case DK: { if (status) gpio_bit_set(GPIOC, GPIO_PIN_2); else gpio_bit_reset(GPIOC, GPIO_PIN_2); } break; default: break; } } void Relay_loop_set(struct_realy_t struct_realy) { static struct_realy_t last_relay; if (last_relay.relay_hk != struct_realy.relay_hk) { if (struct_realy.relay_hk == 1) { Relay_Set(HK, 1); } else { Relay_Set(HK, 0); } } if (last_relay.relay_ck != struct_realy.relay_ck) { if (struct_realy.relay_ck == 1) { Relay_Set(CK, 1); } else { Relay_Set(CK, 0); } } if (last_relay.speed_type.fs1 != struct_realy.speed_type.fs1) { if (struct_realy.speed_type.fs1 == 1) { Relay_Set(FS1, 1); } else { Relay_Set(FS1, 0); } } if (last_relay.speed_type.fs2 != struct_realy.speed_type.fs2) { if (struct_realy.speed_type.fs2 == 1) { Relay_Set(FS2, 1); } else { Relay_Set(FS2, 0); } } if (last_relay.speed_type.fs3 != struct_realy.speed_type.fs3) { if (struct_realy.speed_type.fs3 == 1) { Relay_Set(FS3, 1); } else { Relay_Set(FS3, 0); } } if (last_relay.relay_dk != struct_realy.relay_dk) { if (struct_realy.relay_dk == 1) { Relay_Set(DK, 1); } else { Relay_Set(DK, 0); } } memcpy(&last_relay, &struct_realy, sizeof(struct_realy_t)); } uint8_t SetTemp_RealTemp_Compare(uint16_t SetTemp) { int16_t Real_Temp = dis_page_param.face_plate_param.Real_time_Temp; if (Real_Temp <= (SetTemp + 10) && (Real_Temp + 10) >= SetTemp) { return 0; } else if (Real_Temp > (SetTemp + 10) && Real_Temp < (SetTemp + 30)) { return 1; } else if (Real_Temp >= (SetTemp + 30) && Real_Temp < (SetTemp + 50)) { return 2; } else if (Real_Temp >= (SetTemp + 50)) { return 3; } else if ((Real_Temp + 10) < SetTemp && (Real_Temp + 30) > SetTemp) { return 4; } else if ((Real_Temp + 30) <= SetTemp && (Real_Temp + 50) > SetTemp) { return 5; } else if ((Real_Temp + 50) <= SetTemp) { return 6; } return 0; } void Wind_Speed_relay_Set(uint16_t Type, speed_type_t *speed_type, uint8_t compare_value) { switch (Type) { case 0x0000: { speed_type->fs1 = 0; speed_type->fs2 = 0; speed_type->fs3 = 0; } break; case 0x0001: { speed_type->fs1 = 1; speed_type->fs2 = 0; speed_type->fs3 = 0; } break; case 0x0002: { speed_type->fs1 = 0; speed_type->fs2 = 1; speed_type->fs3 = 0; } break; case 0x0003: { speed_type->fs1 = 0; speed_type->fs2 = 0; speed_type->fs3 = 1; } break; case 0x0100: { if (compare_value == 1 || compare_value == 4) { speed_type->fs1 = 1; speed_type->fs2 = 0; speed_type->fs3 = 0; } else if (compare_value == 2 || compare_value == 5) { speed_type->fs1 = 0; speed_type->fs2 = 1; speed_type->fs3 = 0; } else if (compare_value == 3 || compare_value == 6) { speed_type->fs1 = 0; speed_type->fs2 = 0; speed_type->fs3 = 1; } } break; default: break; } }