#include "gd32e230x_conf.h" #include "main.h" #include "SysTick.h" #include "Relay.h" #include "Key.h" #include "Led.h" #include "Timer.h" #include "Electricity.h" #include "Temprature.h" #include "Beep.h" #include "Fan.h" #include "Exti.h" #include "At24xx.h" #include "Fwdgt.h" #include "Mb.h" sts_data_t sts_data; sts_data_t *get_sts(void) { return &sts_data; } int main() { InitSysTick(); InitKey(); InitLED(); InitTimer(); fans_init(); beep_init(); temp_init(); at24xx_init(); electricity_init(); sts_exti_init(); uint8_t md_addr = ReadKeyValue(); eMBInit(MB_RTU,md_addr,0,115200,MB_PAR_NONE); eMBEnable(); Fwdgt_Init(); sts_data.read_input_level(INPUT_CHANNEL_1); sts_data.read_input_level(INPUT_CHANNEL_2); sts_data.read_switch_level(); if(sts_data.switch_status == INPUT_CHANNEL_1 && sts_data.m_data.input_status.input_status[INPUT_CHANNEL_1]) { sts_data.choise_input(INPUT_CHANNEL_1); }else { sts_data.choise_input(INPUT_CHANNEL_2); } if(sts_data.m_data.out_status) { sts_data.open_output(); }else { sts_data.close_output(); } uint8_t channel = CH448_CHANNEL_1; while(1){ Fwdgt_reload(); eMBPoll(); sts_data.read_temp(); // read consumer if(sts_data.flag_1000ms) { sts_data.flag_1000ms = 0; sts_data.led_flash(); if(sts_data.beep_flag) { sts_data.beep(); } } if(sts_data.flag_100ms) { sts_data.flag_100ms = 0; sts_data.read_ele(channel); // sts_data.check_wanning(channel); channel ++; } if(channel == CH448_CHANNEL_3) { //check input and is or not swtict input if((sts_data.m_data.input_status.input_status[INPUT_CHANNEL_1]) && (sts_data.m_data.input_status.input_status[INPUT_CHANNEL_2])) { sts_data.beep_flag = 0; if(sts_data.m_data.md_choise.choise_ch == INPUT_CHANNEL_1) { if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_1])) { if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_2])) { if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output(); }else { sts_data.choise_input(INPUT_CHANNEL_2); } } }else if(sts_data.m_data.md_choise.choise_ch == INPUT_CHANNEL_2) { if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_1])) { if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output(); }else { sts_data.choise_input(INPUT_CHANNEL_1); } }else { ; } }else if((sts_data.m_data.input_status.input_status[INPUT_CHANNEL_1]) ) { sts_data.beep_flag = 1; if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_1])) { if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output(); } }else if((sts_data.m_data.input_status.input_status[INPUT_CHANNEL_2]) ){ sts_data.beep_flag = 1; if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_2])) { if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output(); } } channel = CH448_CHANNEL_1; } if(sts_data.temp_online_flag == TEMP_ONLINE) { sts_data.m_data.temprature = sts_data.temprature * 100; if(sts_data.m_data.temprature_th.fans_max_temp != 0 && sts_data.m_data.temprature_th.fans_min_temp != 0) { if(sts_data.m_data.temprature_th.fans_max_temp > sts_data.m_data.temprature_th.fans_min_temp) { if((uint16_t)(sts_data.temprature*100) >= sts_data.m_data.temprature_th.fans_max_temp) { if(sts_data.m_data.fans_status != FANS_ON) { sts_data.fans(FANS_ON); } }else if((uint16_t)(sts_data.temprature*100) <= sts_data.m_data.temprature_th.fans_min_temp) { if(sts_data.m_data.fans_status != FANS_OFF) { sts_data.fans(FANS_OFF); } } } } } } return 0; }