#include "exti.h" #include "key.h" #include "gpio.h" #include "uart.h" #include "eeprom.h" #include "extern_rtc.h" #include "system_general_para.h" #include "key.h" #include "valve_control.h" #include "system_mem_para.h" #include "system_run_fun.h" #include "power_manage.h" #include "pulse_and_alarm_line.h" #include "tim.h" #include "wireless_remote_comm.h" #include "main.h" #include "lcd.h" void NMI_Handler(void) { // //NWKUPĬÈÏÁ¬½Óµ½ÁËcpuµÄNMI²»¿ÉÆÁ±ÎÖжϣ¬²»ÊÜNVIC¿ØÖÆ£¬²»ÊÜÈ«¾ÖÖжÏʹÄÜ¿ØÖÆ£¬»½ÐѺó±ØÈ»½øNMIÖÐ¶Ï // if( SET == PMU_WKFR_WKPxF_Chk(PINWKEN_PF5) ) // { // PMU_WKFR_WKPxF_Clr(PINWKEN_PF5); // __SYS_STATUS_ALARM_BYTES_SET(uncap_state_1); //#ifdef RS232_PRINTF // printf("¿ª¸Ç±¨¾¯\r\n"); //#endif // } } void GPIO_IRQHandler(void) { // if(__SYS_DELAY_SEC_FLAG_GET(sys_active_time) == SET && LargeCurrent_LimitingProcess() == 3) SysWakeUp_ClockCfg(); if(GPIO_EXTI_EXTIISR_ChkEx(EXT_RTC_INT_PORT, EXT_RTC_INT_PIN) == SET) //RTCÖÐ¶Ï { GPIO_EXTI_EXTIISR_ClrEx(EXT_RTC_INT_PORT, EXT_RTC_INT_PIN); sys_run_period = SET; // ÅжÏϵͳ¼¤»îʱ¼äÊÇ·ñ½áÊø if (sys_delay_sec_para_g.sys_active_time.delay_time) { if (!(--sys_delay_sec_para_g.sys_active_time.delay_time)) { sys_delay_sec_para_g.sys_active_time.delay_flag = SET; } } // ÅжÏÉÏλ»ú³¬Ê±Ê±¼ä if (sys_delay_sec_para_g.UC_active_time.delay_time) { if (!(--sys_delay_sec_para_g.UC_active_time.delay_time)) sys_delay_sec_para_g.UC_active_time.delay_flag = SET; } // ÅжÏGPRS³¬Ê±Ê±¼ä if (sys_delay_sec_para_g.wrc_timeout_para.delay_time) { if (!(--sys_delay_sec_para_g.wrc_timeout_para.delay_time)) sys_delay_sec_para_g.wrc_timeout_para.delay_flag = SET; } //wrcÖØ±¨Ê±¼äµ¹¼ÆÊ± if (wrc_ctrl_para_g.wrc_restart_time_sec_cnt) { if (!(--wrc_ctrl_para_g.wrc_restart_time_sec_cnt)) ; } } if(GPIO_EXTI_EXTIISR_ChkEx(KEY1_PORT, KEY1_PIN) == SET) //key1ÖжÏ,µçÔ´ { GPIO_EXTI_EXTIISR_ClrEx(KEY1_PORT, KEY1_PIN); if(KEY1_IO_READ==Bit_RESET) { if((KEY3_IO_READ==Bit_RESET)&&(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) >0)) { //¿ª·§ if(__SYS_STATUS_BYTES_GET(account_state) == RESET ||__SYS_STATUS_BYTES_GET(valve_lock) == RESET ) ValveCtrlOrder(VC_OPEN,VALVE_CTRL_SOURCE_KEY); }else if((KEY2_IO_READ==Bit_RESET)&&(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) >0)) { //¹Ø·§ if(__SYS_STATUS_BYTES_GET(account_state) == RESET) ValveCtrlOrder(VC_CLOSE,VALVE_CTRL_SOURCE_KEY); }else { //µ¥»÷µçÔ´ if(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) ==0){ //Ê״λ½ÐÑ£¬LCD°åÏÈÉϵ磬ʹµÄkey2ºÍkey3À­ÉÏÉúЧ£¬²¢ÇÒÊ״λ½ÐÑÐèÒª³õʼ»¯Òº¾§Çý¶¯£¬Öñê־λ lcd_first_wake_up_flag_g = SET; Lcd_GPIO_Init(); LCD_PWR_ON; } __SYS_DELAY_SEC_TIME_SET_(sys_active_time,SYS_WAKE_UP_TIME); lcd_wake_up_flag_g = SET; Key_GPIO_Init(); pwr_vol_g.lith_flag = LMS_KEY; //°´µçÔ´¼ü²É¼¯Ò»´Îµç³Øµçѹ pwr_vol_g.alka_flag = AMS_KEY; } } } // if(GPIO_EXTI_EXTIISR_ChkEx(KEY2_PORT, KEY2_PIN) == SET) //key2ÖÐ¶Ï // { // GPIO_EXTI_EXTIISR_ClrEx(KEY2_PORT, KEY2_PIN); // if(KEY2_IO_READ==Bit_RESET) // { // lcd_wake_up_flag_g = SET; // if(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) >0){ //¼¤»îºóÈÎÒâ°´¼üÖØÖü¤»îʱ¼ä // __SYS_DELAY_SEC_TIME_SET_(sys_active_time,SYS_WAKE_UP_TIME); // } // } // } // // if(GPIO_EXTI_EXTIISR_ChkEx(KEY3_PORT, KEY3_PIN) == SET) //key3ÖÐ¶Ï // { // GPIO_EXTI_EXTIISR_ClrEx(KEY3_PORT, KEY3_PIN); // if(KEY3_IO_READ==Bit_RESET) // { // if(KEY2_IO_READ==Bit_RESET) // { // //²É¼¯Á÷Á¿¼ÆÊý¾Ý²¢´¥·¢Éϱ¨ // start_rs485_g = RS485_START_REASON_KEY; // start_wrc_g = WRC_MEANS_KEY; // }else{ // lcd_wake_up_flag_g = SET; // } // // if(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) >0){ //¼¤»îºóÈÎÒâ°´¼üÖØÖü¤»îʱ¼ä // __SYS_DELAY_SEC_TIME_SET_(sys_active_time,SYS_WAKE_UP_TIME); // } // // } // } // if(GPIO_EXTI_EXTIISR_ChkEx(KEY4_PORT, KEY4_PIN) == SET) //key4ÖÐ¶Ï // { // GPIO_EXTI_EXTIISR_ClrEx(KEY4_PORT, KEY4_PIN); // } if(GPIO_EXTI_EXTIISR_ChkEx(Motor_OP_PORT, Motor_OP_PIN) == SET) //·§ÃÅ¿ª¹Øµ½Î»ÐźÅÓõÄͬһ¸öÖжϣ¬ËùÒÔ·ÅÒ»Æð´¦Àí { GPIO_EXTI_EXTIISR_ClrEx(Motor_OP_PORT, Motor_OP_PIN); if(save_valve_para_g.valve_status == VALVE_OPENING){ if(Motor_OP_IO_READ == Bit_RESET){ //Òý½Å״̬ȷÈÏ ValveMotorStop();//¹Ø±ÕÇý¶¯ save_valve_para_g.valve_status = VALVE_OPEN; } }else if(save_valve_para_g.valve_status == VALVE_CLOSING){ if(Motor_CL_IO_READ == Bit_RESET){ //Òý½Å״̬ȷÈÏ ValveMotorStop();//¹Ø±ÕÇý¶¯ save_valve_para_g.valve_status = VALVE_CLOSE; } } } // if(GPIO_EXTI_EXTIISR_ChkEx(Motor_CL_PORT, Motor_CL_PIN) == SET) //·§ÃŹص½Î»ÖÐ¶Ï // { // GPIO_EXTI_EXTIISR_ClrEx(Motor_CL_PORT, Motor_CL_PIN); // if(Motor_CL_IO_READ == Bit_RESET){ //Òý½Å״̬ȷÈÏ // ValveMotorStop();//¹Ø±ÕÇý¶¯ // save_valve_para_g.valve_status = VALVE_CLOSE; // } // // } if(GPIO_EXTI_EXTIISR_ChkEx(LITH_PWR_LOSE_PORT, LITH_PWR_LOSE_PIN) == SET) { GPIO_EXTI_EXTIISR_ClrEx(LITH_PWR_LOSE_PORT, LITH_PWR_LOSE_PIN); // __SYS_STATUS_ALARM_BYTES_SET(lith_remove); pwr_vol_g.lith_lose_check_flag = SET; } // if(GPIO_EXTI_EXTIISR_ChkEx(ALKA_PWR_LOSE_PORT, ALKA_PWR_LOSE_PIN) == SET) // { // GPIO_EXTI_EXTIISR_ClrEx(ALKA_PWR_LOSE_PORT, ALKA_PWR_LOSE_PIN); //// __SYS_STATUS_ALARM_BYTES_SET(alka_remove); // // pwr_vol_g.alka_lose_check_flag = SET; // } if(GPIO_EXTI_EXTIISR_ChkEx(LF_PULSE_INT_PORT, LF_PULSE_INT_PIN) == SET) //¼Æ·ÑµÍƵÂö³å { GPIO_EXTI_EXTIISR_ClrEx(LF_PULSE_INT_PORT, LF_PULSE_INT_PIN); //Ŀǰ½ö¿ªÆô¼Æ·ÑÂö³å¹¦ÄÜÇÒûÓб»¸´ÓòÅÐèÒª´¦Àí 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))){ pulse_exti_flag = SET; BTx_CR1_CHEN_Setable(BT1,ENABLE); //¿ªÆô¶¨Ê±Æ÷ } } if(GPIO_EXTI_EXTIISR_ChkEx(HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN) == SET) //ÍâµçÒÆ³ýÖÐ¶Ï { GPIO_EXTI_EXTIISR_ClrEx(HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN); //ÍâµçÒÆ³ýÁËÁ¢¼´¹Ø±ÕÍâµç¿ØÖÆ EX_PWR_OFF; // __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL); } if(GPIO_EXTI_EXTIISR_ChkEx(LIMIT_TRIGGER_PORT, LIMIT_TRIGGER_PIN) == SET) //ÏÞÁ÷´¥·¢ { GPIO_EXTI_EXTIISR_ClrEx(LIMIT_TRIGGER_PORT, LIMIT_TRIGGER_PIN); //¼Ç¼ÏÞÁ÷´¥·¢Ê±µÄÐÅÏ¢ arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g.year,&limit_trigger_record_para_g.record_time_BCD.year,sizeof(sys_clockBCD_g),LITTLE_ENDIAN); limit_trigger_record_para_g.trigger_times ++; limit_trigger_record_para_g.RS485_running_flag = sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag; limit_trigger_record_para_g.valve_running_flag = sys_fun_run_ctrl_g.valve_ctrl_flag.running_flag; limit_trigger_record_para_g.wrc_running_flag = sys_fun_run_ctrl_g.wrc_ctrl_flag.running_flag; limit_trigger_record_para_g.EXPWR_check_status = HWIDO_EX_PWR_IO_READ; limit_trigger_record_para_g.EXPWR_ctrl_status = __SYS_STATUS_BYTES_GET(power_state); } // if(GPIO_EXTI_EXTIISR_ChkEx(VALVE_FORCED_OPEN_PORT, VALVE_FORCED_OPEN_PIN) == SET) // { // GPIO_EXTI_EXTIISR_ClrEx(VALVE_FORCED_OPEN_PORT, VALVE_FORCED_OPEN_PIN); //#ifdef RS232_PRINTF // printf("Ç¿ÖÆ¿ª·§\r\n"); //#endif // } // //PF5 ºÍ PF6 ÊÇ Í¬Ò»ÖжÏÏß²»ÄÜͨ¹ýGPIO_EXTI_EXTIISR_ChkEx¸Ãº¯ÊýÇø·ÖÒý½Å // //¶þÕßÖжϱßÑØÖ»ÄÜÑ¡ÆäÒ» //// if(GPIO_EXTI_EXTIISR_ChkEx(LIT_PWR_UNDER_PORT, LIT_PWR_UNDER_PIN) == SET) //// { //// GPIO_EXTI_EXTIISR_ClrEx(LIT_PWR_UNDER_PORT, LIT_PWR_UNDER_PIN); //// if(GPIO_ReadInputDataBit(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN) == Bit_RESET) //// { //// __SYS_STATUS_ALARM_BYTES_SET(lith_under); //// pwr_vol_g.lith_flag = LMS_PERIOD; //// pwr_vol_g.lith_vcc_per = 0; ////#ifdef RS232_PRINTF //// printf("﮵çǷѹ\r\n"); ////#endif //// } //// if(GPIO_ReadInputDataBit(UNCAP_DETECTION_PORT,UNCAP_DETECTION_PIN) == Bit_SET) //// { //// __SYS_STATUS_ALARM_BYTES_SET(uncap_state_1); ////#ifdef RS232_PRINTF //// printf("¿ª¸Ç±¨¾¯\r\n"); ////#endif //// } //// } } void All_Exti_Init(void) { // CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK);//EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ // CMU_OPCCR1_EXTICKE_Setable(ENABLE); //EXTI¹¤×÷ʱÖÓʹÄÜ // // GPIO_EXTI_Init( KEYA_S1_PORT, KEYA_S1_PIN, EXTI_FALLING, ENABLE); //ÊäÈëÖжϴò¿ª¡¢Ï½µÑØ´¥·¢¡¢¿ªÆôÊý×ÖÂ˲¨ //PD6 // GPIO_EXTI_Init( VALVE_FORCED_OPEN_PORT, VALVE_FORCED_OPEN_PIN, EXTI_RISING, ENABLE); //PA1 // GPIO_EXTI_Init( LITH_PWR_LOSE_PORT, LITH_PWR_LOSE_PIN, EXTI_FALLING, ENABLE); //PF11 //// GPIO_EXTI_Init( LIT_PWR_UNDER_PORT, LIT_PWR_UNDER_PIN, EXTI_FALLING, ENABLE); //PF6 // GPIO_EXTI_Init( ALKA_PWR_LOSE_PORT, ALKA_PWR_LOSE_PIN, EXTI_FALLING, ENABLE); //PA4 //// GPIO_EXTI_Init( UNCAP_DETECTION_PORT, UNCAP_DETECTION_PIN, EXTI_RISING, ENABLE); //PF5 //// GPIO_PINWKSEL_SetEx(PINWKEN_PF5,GPIO_PINWKEN_PINWKSEL_RISING); //// GPIO_PINWKEN_SetableEx(PINWKEN_PF5,ENABLE);//ʹÄÜPB0µÄNWKUP1¹¦ÄÜ // /*NVICÖжÏÅäÖÃ*/ // NVIC_DisableIRQ(GPIO_IRQn); // NVIC_SetPriority(GPIO_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖà // NVIC_EnableIRQ(GPIO_IRQn); }