| | |
| | | #include "system_eep_mem_manage.h" |
| | | #include "system_mem_para.h" |
| | | #include "eeprom.h" |
| | | #include "mbcrc.h" |
| | | #include "mbcrc1.h" |
| | | #include "gpio.h" |
| | | #include "extern_rtc.h" |
| | | #include "key.h" |
| | | #include "lcd_io_api.h" |
| | | #include "wireless_remote_comm.h" |
| | | #include "power_manage.h" |
| | | #include "pulse_and_alarm_line.h" |
| | | #include "valve_control.h" |
| | | #include "linked_list.h" |
| | | |
| | | |
| | | RS485_START_REASON start_rs485_g = RS485_START_REASON_NONE; |
| | | WRC_START_MEANS start_wrc_g = WRC_MEANS_NONE; |
| | | |
| | | |
| | | void allGpioInit(void) |
| | | { |
| | | // CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | // |
| | | |
| | | // InputtIO(UNCAP_DETECTION_PORT,UNCAP_DETECTION_PIN,IN_NORMAL); |
| | | // |
| | | |
| | | // Lcd_IO_Init(); |
| | | // Measure_IO_Init(); |
| | | // KEY_IO_Init(); |
| | | // Valve_IO_Init(); |
| | | // ADC_LithIO_Init(); |
| | | // ADC_AlkaIO_Init(); |
| | | // Power_IO_Init(); |
| | | // Gprs_IO_Init(); |
| | | // E2p_IO_Init(); |
| | | // |
| | | // SYS_BST_EN; |
| | | E2P_Ctrl_Gpio_Init(); |
| | | |
| | | RTC_GPIO_Init(); |
| | | |
| | | Key_GPIO_Init(); |
| | | |
| | | Lcd_GPIO_Init(); |
| | | |
| | | Power_IO_Init();//µçÔ´Ïà¹Ø |
| | | |
| | | Valve_CTRL_GPIO_Init(); |
| | | |
| | | Pulse_And_Alarm_Line_IO_Init(); |
| | | |
| | | RS485_read_data_GPIO_Init(); |
| | | } |
| | | |
| | | //ËùÓÐÍâÉèÇý¶¯ÅäÖà |
| | |
| | | //I0¿ÚÅäÖÃ |
| | | allGpioInit(); |
| | | |
| | | //ÍâÉ蹦ÄÜÅäÖà |
| | | allPeripheralDriver(); |
| | | //¸´Î»Æô¶¯£¬²¿·Ö±ØÒªÍâÉ蹦Äܳõʼ»¯£¬ÐèÒªÓõ½²Å¿ªÆôµÄÍâÉ蹦Äܿɲ»ÔÚÕâÀïÆôÓà |
| | | // allPeripheralDriver(); |
| | | SPI3_Init(); //EEP-SPI³õʼ»¯ |
| | | } |
| | | |
| | | |
| | | //ËùÓÐÍⲿÒý½ÅÖжÏÅäÖà |
| | | void allExtiIRQ(void) |
| | | { |
| | | CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK);//EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ |
| | | CMU_OPCCR1_EXTICKE_Setable(ENABLE); //EXTI¹¤×÷ʱÖÓʹÄÜ |
| | | |
| | | GPIO_EXTI_Init( EXT_RTC_INT_PORT, EXT_RTC_INT_PIN, EXTI_FALLING, ENABLE); |
| | | GPIO_EXTI_Init( KEY1_PORT, KEY1_PIN, EXTI_FALLING, ENABLE); |
| | | GPIO_EXTI_Init( KEY2_PORT, KEY2_PIN, EXTI_FALLING, ENABLE); |
| | | GPIO_EXTI_Init( KEY3_PORT, KEY3_PIN, EXTI_FALLING, ENABLE); |
| | | GPIO_EXTI_Init( KEY4_PORT, KEY4_PIN, EXTI_FALLING, ENABLE); |
| | | |
| | | GPIO_EXTI_Init( LITH_PWR_LOSE_PORT, LITH_PWR_LOSE_PIN, EXTI_FALLING, ENABLE); |
| | | GPIO_EXTI_Init( ALKA_PWR_LOSE_PORT, ALKA_PWR_LOSE_PIN, EXTI_FALLING, ENABLE); |
| | | |
| | | /*Âö³åÏßÖжÏÅäÖÃÑ¡Ôñ,û¿ªÆô¸´ÓÃÇÒ¿ªÆôÁËÂö³å*/ |
| | | if(((flow_meter_para_g.broken_line_multiplex & BROKEN_LINE_MUTIPLEX_PULSE)!=BROKEN_LINE_MUTIPLEX_PULSE)&& \ |
| | | ((flow_meter_para_g.flow_meter_conn_type==FLOW_METER_CONN_PULSE)||(flow_meter_para_g.flow_meter_conn_type==FLOW_METER_CONN_RS485_AND_PULSE))){ |
| | | if((flow_meter_para_g.flow_meter_code !=ASMODBUS)&&(flow_meter_para_g.flow_meter_code !=AS100MODBUS)&&(flow_meter_para_g.flow_meter_code !=SIARGO_MODBUS)){ |
| | | GPIO_EXTI_Init( LF_PULSE_INT_PORT, LF_PULSE_INT_PIN, EXTI_FALLING, ENABLE); |
| | | }else{ |
| | | GPIO_EXTI_Init( LF_PULSE_INT_PORT, LF_PULSE_INT_PIN, EXTI_RISING, ENABLE); |
| | | } |
| | | } |
| | | |
| | | /*NVICÖжÏÅäÖÃ*/ |
| | | NVIC_DisableIRQ(GPIO_IRQn); |
| | | NVIC_SetPriority(GPIO_IRQn,0);//ÖжÏÓÅÏȼ¶ÅäÖà |
| | | NVIC_EnableIRQ(GPIO_IRQn); |
| | | |
| | | } |
| | | |
| | |
| | | SYSTEM_EEP_IDENTIFICATION_T sys_eep_id_B_l={0}; |
| | | uint8_t eep_none_flag = 1; //0´ú±í¿Õ£¬·Ç0´ú±í·Ç¿Õ |
| | | |
| | | EEPROM_CTRL_ENABLE; |
| | | //¶ÁÈ¡²ÎÊý³õʼ»¯ÅäÖñêʶ |
| | | //Èç¹û±êʶÎÞ·¨Ê¶±ðÔò´ú±í´æ´¢ÐèҪȫ²¿Ð´ÈëĬÈÏÖµ |
| | | //Èç¹û±êʶʶ±ð³É¹¦´ú±íÒÑÓвÎÊý£¬²ÎÊýÖ±½Ó´Ó´æ´¢ÀïÃæ¶ÁÈ¡ |
| | |
| | | //Èç¹û²¹¶¡±êʶÎÞ·¨Ê¶±ð»òÕßСÓÚ²¹¶¡Ê±¼ä£¬ÔòÐèÒª´ò²¹¶¡´¦Àí |
| | | allParaPatchPro(); |
| | | |
| | | EEPROM_CTRL_DISABLE; |
| | | |
| | | } |
| | | |
| | | |
| | | //ϵͳÔËÐвÎÊý³õʼ»¯ |
| | | void sysRunParaInit(void) |
| | | //ϵͳÔËÐй¦ÄܲÎÊý³õʼ»¯ |
| | | void sysRunFunParaInit(void) |
| | | { |
| | | //¸÷ÖÖ¹¦ÄÜÄ£¿éÔËÐÐËùÐèµÄ²ÎÊý³õʼ»¯ |
| | | |
| | | /*״̬×Ö³õʼ*/ |
| | | system_status_word_g.status_word.account_state = (system_function_ctrl_word_g.fun_ctrl_word.account_open == 1)?1:0; |
| | | system_status_word_g.status_word.valve_lock = (save_valve_para_g.valve_lock_state == VL_LOCK)?1:0; |
| | | system_status_word_g.status_word.virtual_billing = (system_function_ctrl_word_g.fun_ctrl_word.virtual_billing == 1)?1:0; |
| | | system_status_word_g.status_word.billing_type = system_function_ctrl_word_g.fun_ctrl_word.billing_type; |
| | | |
| | | |
| | | /****ÍⲿRTCÅäÖü°²ÎÊý³õʼ»¯***********/ |
| | | Set_Rtc_UpdataInterrupt(); //ÉèÖÃRTCΪÃëÖÐ¶Ï |
| | | //¶ÁÈ¡ÍⲿRTCʱ¼ä£¬ |
| | | if(Get_Extern_Rtc_Time(&sys_clockBCD_g) ==FAIL) |
| | | { |
| | | //²ÉÓÃ´æ´æ´¢¶ÁÈ¡µÄʱ¼äÉèÖõ½RTC |
| | | Set_Extern_Rtc_Time(save_realtime_data_g.record_time_BCD.year,save_realtime_data_g.record_time_BCD.month,save_realtime_data_g.record_time_BCD.day, \ |
| | | 1,save_realtime_data_g.record_time_BCD.hour,save_realtime_data_g.record_time_BCD.min,save_realtime_data_g.record_time_BCD.sec); |
| | | } |
| | | |
| | | //·§ÃÅÔËÐгõʼ»¯ |
| | | ValveRunParaInit(equipment_basic_inf_g.valve_type); |
| | | |
| | | //µçԴ״̬¼ì²â |
| | | PowerManagrInit(); |
| | | |
| | | //Íâµç״̬¼ì²â |
| | | |
| | | //²ð°å¡¢¿ª¸Ç״̬¼ì²â |
| | | |
| | | //Âö³åÏß¡¢±¨¾¯Ïß³õʼ |
| | | PulseAndAlarmLineInit(); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | void sysRunFunCtrlPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p,sClockBCD sys_clockBCD_in) |
| | | { |
| | | uint8_t first_time[2] = {0,0}; |
| | | uint16_t IntervalTime; |
| | | |
| | | /*rs485²É¼¯Æô¶¯¿ØÖÆ£¬ °´¼ü¡¢¶¨Ê±¡¢Òì³£±¨¾¯¡¢¼Ç¼´æ´¢ËùÐèµÈ*/ |
| | | |
| | | /*Сʱ¡¢Ìì¡¢ÔÂ*/ |
| | | if((sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0)) //Сʱ¼Ç¼´æ´¢µã |
| | | start_rs485_g = RS485_START_REASON_RECORD; |
| | | |
| | | if((sys_clockBCD_in.hour == 0)&&(sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0))//Ìì¼Ç¼´æ´¢µã |
| | | start_rs485_g = RS485_START_REASON_RECORD; |
| | | |
| | | if((sys_clockBCD_in.day == 1)&&(sys_clockBCD_in.hour == 0)&&(sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0))//ԼǼ´æ´¢µã |
| | | start_rs485_g = RS485_START_REASON_RECORD; |
| | | |
| | | |
| | | if(__SYS_STATUS_BYTES_GET(power_state) == SET) |
| | | IntervalTime = wrc_para_sizhu_g.ext_power_data_interval; |
| | | else |
| | | IntervalTime = wrc_para_sizhu_g.bat_power_data_interval; |
| | | |
| | | if(IntervalTriggerHandle(sys_clockBCD_in,IntervalTime,first_time)==SET) |
| | | start_rs485_g = RS485_START_REASON_RECORD; |
| | | |
| | | |
| | | if(start_rs485_g != RS485_START_REASON_NONE){ |
| | | start_rs485_g = RS485_START_REASON_NONE; |
| | | sys_fun_run_ctrl_p->rs485_ctrl_flag.start_flag = SET; |
| | | } |
| | | |
| | | /*·§¿Ø¿ØÖÆ£¬·§¿ØÍ¨¹ý°´¼ü»òÕßÖ¸Áî¡¢Òì³£µÈ¿ØÖÆ£¬ÐèÒª²Ù×÷ʱֱ½Óµ÷ÓÃValveCtrlOrderº¯Êý¼´¿É£¬²»ÔÚ´Ë´¦Æô¶¯*/ |
| | | |
| | | |
| | | |
| | | /*Ô¶³ÌͨѶÆô¶¯¿ØÖÆ£¬°´¼ü¡¢¼ä¸ô¡¢ÖÜÆÚ¡¢Òì³£±¨¾¯¡¢Öر¨µÈ*/ |
| | | if((wrc_para_sizhu_g.time_start_type&WRC_TIME_START_INTERVAL)==WRC_TIME_START_INTERVAL){ |
| | | for(uint16_t count_i=0;count_i<wrc_para_sizhu_g.timing_send_num;count_i++){ |
| | | if(count_i>=12) |
| | | break; //ʱ¼ä×éÊý×î´ó12¡£³¬¹ýÔòÍ˳ö |
| | | |
| | | if((sys_clockBCD_in.hour==wrc_para_sizhu_g.timing_send_time_BCD[count_i][0])&&(sys_clockBCD_in.min==wrc_para_sizhu_g.timing_send_time_BCD[count_i][1])&&(sys_clockBCD_in.sec==0)) |
| | | start_wrc_g = WRC_MEANS_RTC_TIMING; |
| | | } |
| | | } |
| | | |
| | | if((wrc_para_sizhu_g.time_start_type&WRC_TIME_START_TIMING)==WRC_TIME_START_TIMING){ |
| | | if(__SYS_STATUS_BYTES_GET(power_state) == SET) |
| | | IntervalTime = wrc_para_sizhu_g.ext_power_send_interval; |
| | | else |
| | | IntervalTime = wrc_para_sizhu_g.bat_power_send_interval; |
| | | |
| | | if(IntervalTriggerHandle(sys_clockBCD_in,IntervalTime,wrc_para_sizhu_g.send_first_time_BCD)==SET) |
| | | start_wrc_g = WRC_MEANS_RTC_INTERVAL; |
| | | } |
| | | |
| | | if((wrc_ctrl_para_g.wrc_restart_num_cnt > 0)&&(wrc_ctrl_para_g.wrc_restart_time_sec_cnt == 0)){ |
| | | if(start_wrc_g == WRC_MEANS_NONE){ |
| | | //´¥·¢Öر¨Éϱ¨ |
| | | start_wrc_g = WRC_MEANS_AGAIN; |
| | | wrc_ctrl_para_g.wrc_restart_num_cnt -- ; |
| | | } |
| | | } |
| | | |
| | | |
| | | if(start_wrc_g != WRC_MEANS_NONE){ |
| | | wrc_ctrl_para_g.wrc_start_flag = start_wrc_g; |
| | | start_wrc_g = WRC_MEANS_NONE; |
| | | if(sys_fun_run_ctrl_p->wrc_ctrl_flag.start_flag == RESET){ |
| | | pwr_vol_g.alka_flag = AMS_WRC_BEFORE; |
| | | sys_fun_run_ctrl_p->wrc_ctrl_flag.start_flag = SET; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | //ϵͳ±£³ÖÔËÐв»ÐÝÃß״̬£¬·µ»ØRESET´ú±í¿ÉÒÔÐÝÃß |
| | | FlagStatus SysKeepRunningStatusGet(FUN_START_CTRL_PARA_T sys_fun_run_ctrl_in) |
| | | { |
| | | if(__SYS_STATUS_BYTES_GET(power_state) == SET) //Í⹩µç״̬Ï¿ÉÒÔ²»ÐÝÃß |
| | | return SET; |
| | | |
| | | if(sys_fun_run_ctrl_in.rs485_ctrl_flag.running_flag ==SET) |
| | | return SET; |
| | | |
| | | // if(sys_fun_run_ctrl_in.valve_ctrl_flag.running_flag ==SET) //·§¿ØÔËÐпÉÒÔÐÝÃß |
| | | // return SET; |
| | | |
| | | if(sys_fun_run_ctrl_in.wrc_ctrl_flag.running_flag ==SET) |
| | | return SET; |
| | | |
| | | return RESET; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //״̬×Ö´¦Àí |
| | | void SysStatusWordPro(void) |
| | | { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |