#include "systaskinit.h" #include "1ValveControl.h" #include "devicegpioinit.h" #include "1lcd.h" #include "para.h" #include "1gprs.h" #include "menu.h" #include "ReadDeviceData.h" #include "ex_rtc.h" #include "1billing.h" #include "e2p.h" #include "1lcd_new.h" #include "RW_VERIFICATION.h" #include "RS232.h" #include "gpio.h" #if 0 ///*ÒÔÏÂÊÇÖжϷþÎñº¯ÊýµÄÅäÖÃ*/ void GPIO_IRQHandler() { u8 HWID0_state; if (GPIO_EXTI_EXTIISR_ChkEx(HWID0_PIN_GROUP, HWID0_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(HWID0_PIN_GROUP, HWID0_PIN_NUM); All_init(); delay_ms(100); HWID0_state = HWID0_READ; if (HWID0_state == 0) // ÓÐÍâµç { if (gprs_protocol_header.Power_type == 1) { system_alarm.alarm_EXPowerIN = 1; system_alarm.alarm_EXPowerRemove = 0; gprs_protocol_header.Power_type = 2; UTR_init(); } } else if (HWID0_state == 1) { if (gprs_protocol_header.Power_type == 2) { system_alarm.alarm_EXPowerIN = 0; system_alarm.alarm_EXPowerRemove = 1; gprs_protocol_header.Power_type = 1; } } } if (GPIO_EXTI_EXTIISR_ChkEx(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM); All_init(); if ((parmAccess.u8LowPowerAlarmLine & 0x01) == 0x01) { if (LOW_PWR_READ == 0) { delay_ms(30); if (LOW_PWR_READ == 0) { system_alarm.alarm_FlowPowerLOW = 1; system_alarm.alarm_FlowPowerLOW_FLAG = 1; } } } } if (GPIO_EXTI_EXTIISR_ChkEx(ALARM_LINE_PIN_GROUP, ALARM_LINE_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(ALARM_LINE_PIN_GROUP, ALARM_LINE_PIN_NUM); All_init(); if ((parmAccess.u8LowPowerAlarmLine & 0x04) == 0x04) { delay_ms(10); if (ALARM_LINE_READ == 0) { delay_ms(10); if (ALARM_LINE_READ == 0) { if ((device_Parm.AccountStatus == 0x01) || (device_Parm.TestStatus == 1)) // ¿ª»§×´Ì¬Ï¼ì²â¶Ô½ÓÉ豸Ƿѹ£¬Ôò¹Ø·§ { if (((OpenValveAuthorizeFLAG & 0x0f) == 0x01) && ((OpenValveAuthorizeFLAG >> 4) < 9) && ((OpenValveAuthorizeFLAG >> 4) > 0)) // Ç¿ÖÆ¿ª·§£¬Ò쳣״̬ÏÂÒ²²»¹Ø·§ { } else { if (gprs_protocol_header.Valve_Status != 2) // ·§ÃÅ״̬²»ÊÇΪ¹Ø { Valve_close(); } } } system_alarm.alarm_Gas_Leak = 1; system_alarm.alarm_Gas_Leak_LCDFLAG = 1; } } } } if (GPIO_EXTI_EXTIISR_ChkEx(KEY1_PIN_GROUP, KEY1_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(KEY1_PIN_GROUP, KEY1_PIN_NUM); All_init(); if ((LCD_sleepTime) || (LCD_flag == 1)) { if (Time_For_wakeup < LCD_WAKEUP_TIME + 2) // ÐÝÃß»½ÐÑʱ¼äÒª±ÈLCDÁÁµÄʱ¼ä³¤Ò»µã { Time_For_wakeup = LCD_WAKEUP_TIME + 3; } LCD_sleepTime = LCD_WAKEUP_TIME; if ((KEY1_PRESS == 0) && (KEY2_PRESS == 0)) { awaken_flag = Key_awaken; gprs_protocol_header.Send_type = 2; } else { LCD_Menu_Level--; } } } if (GPIO_EXTI_EXTIISR_ChkEx(RTC_INT_PIN_GROUP, RTC_INT_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(RTC_INT_PIN_GROUP, RTC_INT_PIN_NUM); All_init(); Get_Time(); // »ñÈ¡µ±Ç°Ê±¼ä Power_ON_cnt += 20; // Éϵçʱ¼ä if (Power_ON_cnt == 60) { Power_ON_flag = 1; } if (device_Parm.Sample_Min_Time >= 20) { device_Parm.Sample_Min_Time -= 20; } else { device_Parm.Sample_Min_Time = 0; } if (OpenValveAuthorizeTimeCnt >= 20) // Ç¿ÖÆ¿ª·§Ê±ÏÞ¿ØÖÆÓã¬Ã¿´ÎÄÖÖÓ¼õ20Ãë { OpenValveAuthorizeTimeCnt -= 20; if ((OpenValveAuthorizeTimeCnt % 300) == 0) // ΪÁ˼õÉÙE2µÄ´æ´¢´ÎÊý£¬Ã¿300Ãë²Å´æÒ»´Î { FM25V02_data_write_uint32(OPEN_VALVE_AUTHORIZE_TIME_CNT_ADDRA, OpenValveAuthorizeTimeCnt); } } else { if (((OpenValveAuthorizeFLAG & 0x0f) == 0x01) && ((OpenValveAuthorizeFLAG >> 4) < 8) && ((OpenValveAuthorizeFLAG >> 4) > 0)) // Ç¿ÖÆ¿ª·§£¬Ò쳣״̬ÏÂÒ²²»¹Ø·§£¬ÓÐʱ¼äÏÞÖÆ¿ª·§Ê±¼äµ½»áÈ¡Ïû£¬ÎÞʱ¼äÏÞÖÆ¿ª·§Ã»ÓмÆÊ± { OpenValveAuthorizeFLAG = 0; FM25V02_data_write(OpenValveAuthorizeFLAG, OPEN_VALVE_AUTHORIZE_FLAG_ADDR); } } if (gprs_protocol_header.Valve_Status == 2) { Valve_control_parm.ValveHaveClosedTime += 20; } else { Valve_control_parm.ValveHaveClosedTime = 0; } } if (GPIO_EXTI_EXTIISR_ChkEx(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM); All_init(); delay_ms(10); if (LITH_BAT_LOW_PWR_PIN_READ == 0) { if (HWID0_READ == 1) { if ((device_Parm.AccountStatus == 0x01) || (device_Parm.TestStatus == 1)) // ¿ª»§×´Ì¬Ï¼ì²âµ½ï®µç¶Ïµç£¬Ôò¹Ø·§ { Valve_close(); } } Bat_Lith_status = 1; system_alarm.alarm_LithPowerDOWN = 1; } else { } } if (GPIO_EXTI_EXTIISR_ChkEx(FORCE_OPEN_INT_PIN_GROUP, FORCE_OPEN_INT_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(FORCE_OPEN_INT_PIN_GROUP, FORCE_OPEN_INT_PIN_NUM); All_init(); delay_ms(10); if (FORCE_OPEN_INT_READ == 1) { delay_ms(30); if (FORCE_OPEN_INT_READ == 1) { system_alarm.alarm_Valve_Force_Open = 1; if (Valve_control_parm.Valve_Type != SZV102_VALVE) { Valve_Force_Open_Time_Judge(); Valve_Force_Open_Flag = 1; } else { Valve_Force_Open_Flag = 0; system_alarm.alarm_Valve_open = 1; gprs_protocol_header.Valve_Status = 1; Valve_control_parm.ValveHaveClosedTime = 0; FM25V02_data_write(gprs_protocol_header.Valve_Status, VALVE_STATE_ADDR); } } } else { } } if (GPIO_EXTI_EXTIISR_ChkEx(Motor_OP_PIN_GROUP, Motor_OP_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(Motor_OP_PIN_GROUP, Motor_OP_PIN_NUM); All_init(); if (Valve_control_parm.Valve_Type == SZV102_VALVE) { delay_ms(1); if (Motor_OP_PIN_READ == 0) { if (Valve_control_parm.OpenValveTime > 3) // ºöÂÔ3ÃëÄÚµÄÖжϣ¬ÒòΪ·§ÃÅÆô¶¯Ë²¼äµçÁ÷½Ï´ó»á½øÈëÖÐ¶Ï { if (OpenValveFLAG == 1 || Valve_Force_Open_Flag == 1) { Motor_A_EN_L; Motor_B_EN_L; OpenValveFLAG = 0; Valve_Force_Open_Flag = 0; system_alarm.alarm_Valve_open = 1; gprs_protocol_header.Valve_Status = 1; Valve_control_parm.ValveHaveClosedTime = 0; FM25V02_data_write(gprs_protocol_header.Valve_Status, VALVE_STATE_ADDR); Time_For_valve_open = 0; // Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË Valve_control_parm.OpenValveTime = 0; Valve_control_parm.CloseValveTime = 0; } } } } else if (Valve_control_parm.Valve_Type == SZV103_VALVE) { if (Valve_control_parm.OpenValveTime > 3) { if (OpenValveFLAG == 1 || Valve_Force_Open_Flag == 1) { Motor_A_EN_L; Motor_B_EN_L; OpenValveFLAG = 0; Valve_Force_Open_Flag = 0; system_alarm.alarm_Valve_open = 1; gprs_protocol_header.Valve_Status = 1; Valve_control_parm.ValveHaveClosedTime = 0; Time_For_valve_open = 0; // Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË Valve_control_parm.OpenValveTime = 0; Valve_control_parm.CloseValveTime = 0; } } } else { if (OpenValveFLAG == 1 || Valve_Force_Open_Flag == 1) { Motor_A_EN_L; Motor_B_EN_L; OpenValveFLAG = 0; Valve_Force_Open_Flag = 0; system_alarm.alarm_Valve_open = 1; gprs_protocol_header.Valve_Status = 1; Valve_control_parm.ValveHaveClosedTime = 0; Time_For_valve_open = 0; // Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË } } } if (GPIO_EXTI_EXTIISR_ChkEx(Motor_CL_PIN_GROUP, Motor_CL_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(Motor_CL_PIN_GROUP, Motor_CL_PIN_NUM); All_init(); if (Valve_control_parm.Valve_Type == SZV102_VALVE) { delay_ms(1); if (Motor_CL_PIN_READ == 0) { if (Valve_control_parm.CloseValveTime > 3) // ºöÂÔ3ÃëÄÚµÄÖжϣ¬ÒòΪ·§ÃÅÆô¶¯Ë²¼äµçÁ÷½Ï´ó»á½øÈëÖÐ¶Ï { if (OpenValveFLAG == 2) { Motor_A_EN_L; Motor_B_EN_L; OpenValveFLAG = 0; system_alarm.alarm_Valve_close = 1; gprs_protocol_header.Valve_Status = 2; Valve_control_parm.ValveHaveClosedTime = 1; FM25V02_data_write(gprs_protocol_header.Valve_Status, VALVE_STATE_ADDR); Time_For_valve_open = 0; // Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË Valve_control_parm.OpenValveTime = 0; Valve_control_parm.CloseValveTime = 0; } } } } else if (Valve_control_parm.Valve_Type == SZV103_VALVE) { if (Valve_control_parm.CloseValveTime > 3) // ºöÂÔ3ÃëÄÚµÄÖжϣ¬ÒòΪ·§ÃÅÆô¶¯Ë²¼äµçÁ÷½Ï´ó»á½øÈëÖÐ¶Ï { if (OpenValveFLAG == 2) { Motor_A_EN_L; Motor_B_EN_L; OpenValveFLAG = 0; system_alarm.alarm_Valve_close = 1; gprs_protocol_header.Valve_Status = 2; Valve_control_parm.ValveHaveClosedTime = 1; Time_For_valve_open = 0; // Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË Valve_control_parm.OpenValveTime = 0; Valve_control_parm.CloseValveTime = 0; } } } else { } } if (GPIO_EXTI_EXTIISR_ChkEx(KEY2_PIN_GROUP, KEY2_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(KEY2_PIN_GROUP, KEY2_PIN_NUM); All_init(); if ((LCD_sleepTime) || (LCD_flag == 1)) { if (Time_For_wakeup < LCD_WAKEUP_TIME + 2) // ÐÝÃß»½ÐÑʱ¼äÒª±ÈLCDÁÁµÄʱ¼ä³¤Ò»µã { Time_For_wakeup = LCD_WAKEUP_TIME + 3; } LCD_sleepTime = LCD_WAKEUP_TIME; LCD_Menu_Level++; } } if (GPIO_EXTI_EXTIISR_ChkEx(UNCAP_INT_PIN_GROUP, UNCAP_INT_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(UNCAP_INT_PIN_GROUP, UNCAP_INT_PIN_NUM); All_init(); if (UNCAP_INT_READ == 1) { delay_ms(30); if (UNCAP_INT_READ == 1) { if (system_alarm.alarm_Cap_OPEN_LCDFALG == 0) { system_alarm.alarm_Cap_OPEN = 1; system_alarm.alarm_Cap_OPEN_LCDFALG = 1; } } } else if (UNCAP_INT_READ == 0) { delay_ms(30); if (UNCAP_INT_READ == 0) { system_alarm.alarm_Cap_OPEN_LCDFALG = 0; } } } if (GPIO_EXTI_EXTIISR_ChkEx(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM); All_init(); if ((parmAccess.u8LowPowerAlarmLine & 0x02) == 0x02) { if (UNDER_PWR_READ == 0) { delay_ms(30); if (UNDER_PWR_READ == 0) { if ((device_Parm.AccountStatus == 0x01) || (device_Parm.TestStatus == 1)) // ¿ª»§×´Ì¬Ï¼ì²â¶Ô½ÓÉ豸Ƿѹ£¬Ôò¹Ø·§ { if (((OpenValveAuthorizeFLAG & 0x0f) == 0x01) && ((OpenValveAuthorizeFLAG >> 4) < 9) && ((OpenValveAuthorizeFLAG >> 4) > 0)) // Ç¿ÖÆ¿ª·§£¬Ò쳣״̬ÏÂÒ²²»¹Ø·§ { } else { if (gprs_protocol_header.Valve_Status != 2) // ·§ÃÅ״̬²»ÊÇΪ¹Ø { Valve_close(); } } } system_alarm.alarm_FlowUnderPower = 1; } } } } if (GPIO_EXTI_EXTIISR_ChkEx(KEY3_PIN_GROUP, KEY3_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(KEY3_PIN_GROUP, KEY3_PIN_NUM); All_init(); if (Time_For_wakeup < LCD_WAKEUP_TIME + 2) // ÐÝÃß»½ÐÑʱ¼äÒª±ÈLCDÁÁµÄʱ¼ä³¤Ò»µã { Time_For_wakeup = LCD_WAKEUP_TIME + 3; } if ((KEY1_PRESS == 0) && (KEY3_PRESS == 0)) { if (device_Parm.AccountStatus != 0x01) { Valve_open(); } else if (device_Parm.AccountStatus == 0x01) { if (Settlement_Para.fBalance >= (-parameter_bil.fCredits)) { if (OpenValveAuthorizeFLAG == 0x01) // ¿ª·§ÊÚȨ±êÖ¾ { PulseLine_Detection(); if ((system_alarm.alarm_Pulse_Broken_LCDFLAG == 0) && (system_alarm.alarm_Gas_Leak_LCDFLAG == 0)) { Valve_open(); } else { } OpenValveAuthorizeFLAG = 0x00; FM25V02_data_write(OpenValveAuthorizeFLAG, OPEN_VALVE_AUTHORIZE_FLAG_ADDR); } else if (((OpenValveAuthorizeFLAG & 0x0f) == 0x01) && ((OpenValveAuthorizeFLAG >> 4) < 9) && ((OpenValveAuthorizeFLAG >> 4) > 0)) // Ç¿ÖÆ¿ª·§£¬Ò쳣״̬ÏÂÒ²²»¹Ø·§ { Valve_open(); } } else { } } } else if ((KEY2_PRESS == 0) && (KEY3_PRESS == 0)) { Valve_close(); } else { UTR_init(); LeakAlarmLine_Detection(); PulseLine_Detection(); device_Parm.Key_Power_Det = 1; LCD_Power_Init(); /** ÕâÀïÊǾÉÒº¾§²¿·Ö */ if (LCD_TYPE_FLAG == 0) { lcd_init(); LCD_DisplayAll(); } else /*ÕâÀïÊÇÐÂÒº¾§²¿·Ö*/ { lcd_init_new(); LCD_DisplayAll_New1(); } LCD_sleepTime = LCD_WAKEUP_TIME; } } } #endif // void BSTIM_IRQHandler(void) // { // if(BSTIM_ISR_UIF_Chk()!=RESET) //¿ª/¹Ø·§Ê±¼ä // { // BSTIM_ISR_UIF_Clr(); // if(VariaDlg.RestartTime) // { // VariaDlg.RestartTime -- ; // } // // if(ModbusDlg.RepeadTime) // // { // // ModbusDlg.RepeadTime -- ; // // } // if(Time_For_wakeup) // { // Time_For_wakeup --; // } // } // if(Valve_control_parm.Valve_Type == SZV102_VALVE) // { // if(Time_For_valve_open) // { // if(Time_For_valve_open == 1) // { // Motor_A_EN_L; // Motor_B_EN_L; // // gprs_protocol_header.Valve_Status = 0x03; // FM25V02_data_write(gprs_protocol_header.Valve_Status,VALVE_STATE_ADDR); // system_alarm.alarm_Valve_Abnormal_time ++; // if(system_alarm.alarm_Valve_Abnormal_time>=250) // { // system_alarm.alarm_Valve_Abnormal_time = 250; // } // if(system_alarm.alarm_Valve_Abnormal_time<=2) //ÿÌìÖ»±¨2´Î¡£ // { // system_alarm.alarm_Valve_Abnormal = 1; // } // Valve_Force_Open_Flag = 0; // OpenValveFLAG = 0; // } // Time_For_valve_open --; // Valve_control_parm.OpenValveTime ++; // Valve_control_parm.CloseValveTime ++; // // if(Valve_control_parm.OpenValveTime>3) //ºöÂÔ3ÃëÄÚµÄÖжϣ¬ÒòΪ·§ÃÅÆô¶¯Ë²¼äµçÁ÷½Ï´ó»á½øÈëÖÐ¶Ï // { // if(OpenValveFLAG==1 || Valve_Force_Open_Flag == 1) // { // if(Motor_OP_PIN_READ==0) // { // Valve_control_parm.CurrentState0Time++; // if(Valve_control_parm.CurrentState0Time>1) // { // Motor_A_EN_L; // Motor_B_EN_L; // OpenValveFLAG = 0; // system_alarm.alarm_Valve_open = 1; // gprs_protocol_header.Valve_Status = 1; // Valve_control_parm.ValveHaveClosedTime = 0; // FM25V02_data_write(gprs_protocol_header.Valve_Status,VALVE_STATE_ADDR); // Time_For_valve_open = 0; //Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË // Valve_Force_Open_Flag = 0; // Valve_control_parm.CurrentState0Time = 0; // // Valve_control_parm.OpenValveTime = 0; // Valve_control_parm.CloseValveTime = 0; // } // } // } // } // // if(Valve_control_parm.CloseValveTime>3)//ºöÂÔ3ÃëÄÚµÄÖжϣ¬ÒòΪ·§ÃÅÆô¶¯Ë²¼äµçÁ÷½Ï´ó»á½øÈëÖÐ¶Ï // { // if(OpenValveFLAG==2) // { // if(Motor_CL_PIN_READ==0) // { // Valve_control_parm.CurrentState0Time++; // if(Valve_control_parm.CurrentState0Time>1) // { // Motor_A_EN_L; // Motor_B_EN_L; // OpenValveFLAG = 0; // system_alarm.alarm_Valve_close = 1; // gprs_protocol_header.Valve_Status = 2; // Valve_control_parm.ValveHaveClosedTime = 1; // FM25V02_data_write(gprs_protocol_header.Valve_Status,VALVE_STATE_ADDR); // Time_For_valve_open = 0; //Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË // Valve_control_parm.CurrentState0Time = 0; // Valve_control_parm.OpenValveTime = 0; // Valve_control_parm.CloseValveTime = 0; // } // } // } // } // } // } // else if(Valve_control_parm.Valve_Type == SZV103_VALVE) // { // if(Time_For_valve_open) // { // if(Time_For_valve_open == 1) // { // Motor_A_EN_L; // Motor_B_EN_L; // // gprs_protocol_header.Valve_Status = 0x03; // system_alarm.alarm_Valve_Abnormal_time ++; // if(system_alarm.alarm_Valve_Abnormal_time>=250) // { // system_alarm.alarm_Valve_Abnormal_time = 250; // } // if(system_alarm.alarm_Valve_Abnormal_time<=2) //ÿÌìÖ»±¨2´Î¡£ // { // system_alarm.alarm_Valve_Abnormal = 1; // } // // OpenValveFLAG = 0; // Valve_Force_Open_Flag = 0; // } // Time_For_valve_open --; // Valve_control_parm.OpenValveTime ++; // Valve_control_parm.CloseValveTime ++; // if(OpenValveFLAG==1 || Valve_Force_Open_Flag == 1) // { // if(Motor_OP_PIN_READ==0) // { // Valve_control_parm.CurrentState0Time++; // if(Valve_control_parm.CurrentState0Time>1) // { // Motor_A_EN_L; // Motor_B_EN_L; // OpenValveFLAG = 0; // system_alarm.alarm_Valve_open = 1; // gprs_protocol_header.Valve_Status = 1; // Valve_control_parm.ValveHaveClosedTime = 0; // Time_For_valve_open = 0; //Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË // Valve_Force_Open_Flag = 0; // Valve_control_parm.CurrentState0Time = 0; // Valve_control_parm.OpenValveTime = 0; // Valve_control_parm.CloseValveTime = 0; // } // } // } // // if(OpenValveFLAG==2) // { // if(Motor_CL_PIN_READ==0) // { // Valve_control_parm.CurrentState0Time++; // if(Valve_control_parm.CurrentState0Time>1) // { // Motor_A_EN_L; // Motor_B_EN_L; // OpenValveFLAG = 0; // system_alarm.alarm_Valve_close = 1; // gprs_protocol_header.Valve_Status = 2; // Valve_control_parm.ValveHaveClosedTime = 1; // Time_For_valve_open = 0; //Óе½Î»Öжϣ¬³¬Ê±µ½¼ÆÊ±ÇåÁ㣬²»¼ÆÁË // // Valve_control_parm.CurrentState0Time = 0; // Valve_control_parm.OpenValveTime = 0; // Valve_control_parm.CloseValveTime = 0; // } // } // } // // } // } // else // { // if(Time_For_valve_open) // { // if(Time_For_valve_open == 1) // { // Motor_A_EN_L; // Motor_B_EN_L; // // if((gprs_protocol_header.Valve_Status == 2)&&(OpenValveFLAG==1)) //Èç¹ûÈÔ´¦ÓÚ¿ª·§±êÖ¾£¬Î´¿ªµ½Î»£¬Ò²Ã»Óйط§£¬Ôò±íʾ·§ÃÅÒì³££¬ÒѾ­¿ª·§¿ª²»µ½Î»ÁË¡£ // { // gprs_protocol_header.Valve_Status = 0x03; // system_alarm.alarm_Valve_Abnormal_time ++; // if(system_alarm.alarm_Valve_Abnormal_time>=250) // { // system_alarm.alarm_Valve_Abnormal_time = 250; // } // if(system_alarm.alarm_Valve_Abnormal_time<=2) //ÿÌìÖ»±¨2´Î¡£ // { // system_alarm.alarm_Valve_Abnormal = 1; // } // } // OpenValveFLAG = 0; // Valve_Force_Open_Flag = 0; // } // Time_For_valve_open --; // } // } // if(!RTC_Setting_Flag) // { // if(LCD_TYPE_FLAG ==0) // { // if(LCD_sleepTime) // { // LCD_sleepTime --; // LCD_DisplayAll(); // } // else // { // if( LCD_flag == 1) // { // LCD_sleepTime = LCD_WAKEUP_TIME; // LCD_DisplayAll(); // } // else // { // LCD_Power_Init(); // LCD_Clear(); // LCD_Power_OFF; // // } // } // } // else // { // if(LCD_sleepTime) // { // LCD_sleepTime --; // LCD_DisplayAll_New1(); // } // else // { // if( LCD_flag == 1) // { // LCD_sleepTime = LCD_WAKEUP_TIME; // LCD_DisplayAll_New1(); // } // else // { // LCD_Power_Init(); // LCD_Clear_NEW(); // LCD_driver_0FF_NEW(); // LCD_Power_OFF; // } // } // } // } // // } //} /////========ÒÔÏÂÊÇÖжϵÄÅäÖÃ======================================================================================================== void ex_rtc_nv_config() { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(RTC_INT_PIN_GROUP, RTC_INT_PIN_NUM, EXTI_FALLING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } void ex_rtc_nv_config_disable() { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(RTC_INT_PIN_GROUP, RTC_INT_PIN_NUM, EXTI_FALLING, DISABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } void Key_config(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(KEY1_PIN_GROUP, KEY1_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(KEY2_PIN_GROUP, KEY2_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(KEY3_PIN_GROUP, KEY3_PIN_NUM, EXTI_FALLING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } void LOW_PULSE_config(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM, EXTI_FALLING, ENABLE); } void LOW_PULSE_Rising_config(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM, EXTI_RISING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } void LOW_PULSE_Rising_disconfig(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM, EXTI_RISING, DISABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } // void BAT_io_dec_config(void) //{ // CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK);//EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ // CMU_OPCCR1_EXTICKE_Setable(ENABLE); //EXTI¹¤×÷ʱÖÓʹÄÜ // GPIO_EXTI_Init( LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // GPIO_EXTI_Init( UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // GPIO_EXTI_Init( ALKA_BAT_M_PIN_GROUP, ALKA_BAT_M_PIN_NUM, EXTI_FALLING, ENABLE); // GPIO_EXTI_Init( LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM, EXTI_FALLING, ENABLE); // // /*NVICÖжÏÅäÖÃ*/ // NVIC_DisableIRQ(GPIO_IRQn); // NVIC_SetPriority(GPIO_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖà // NVIC_EnableIRQ(GPIO_IRQn); // //} void Alka_Falling_config(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(ALKA_BAT_M_PIN_GROUP, ALKA_BAT_M_PIN_NUM, EXTI_FALLING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } void Alka_Falling_Disconfig(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(ALKA_BAT_M_PIN_GROUP, ALKA_BAT_M_PIN_NUM, EXTI_FALLING, DISABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } // void AlarmLine_config(void) //{ // CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK);//EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ // CMU_OPCCR1_EXTICKE_Setable(ENABLE); //EXTI¹¤×÷ʱÖÓʹÄÜ // GPIO_EXTI_Init( ALARM_LINE_PIN_GROUP, ALARM_LINE_PIN_NUM, EXTI_FALLING, ENABLE); // // /*NVICÖжÏÅäÖÃ*/ // NVIC_DisableIRQ(GPIO_IRQn); // NVIC_SetPriority(GPIO_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖà // NVIC_EnableIRQ(GPIO_IRQn); // //} // void HWID0_config(void) //{ // CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK);//EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ // CMU_OPCCR1_EXTICKE_Setable(ENABLE); //EXTI¹¤×÷ʱÖÓʹÄÜ // GPIO_EXTI_Init( HWID0_PIN_GROUP, HWID0_PIN_NUM, EXTI_FALLING, ENABLE); // // /*NVICÖжÏÅäÖÃ*/ // NVIC_DisableIRQ(GPIO_IRQn); // NVIC_SetPriority(GPIO_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖà // NVIC_EnableIRQ(GPIO_IRQn); // //} // void LIMIT_TRIG_config(void) //{ // CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK);//EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ // CMU_OPCCR1_EXTICKE_Setable(ENABLE); //EXTI¹¤×÷ʱÖÓʹÄÜ // GPIO_EXTI_Init( LIMIT_TRIG_PIN_GROUP, LIMIT_TRIG_PIN_NUM, EXTI_FALLING, ENABLE); // // /*NVICÖжÏÅäÖÃ*/ // NVIC_DisableIRQ(GPIO_IRQn); // NVIC_SetPriority(GPIO_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖà // NVIC_EnableIRQ(GPIO_IRQn); // //} /****************************************** * func: EX_Motor_op_cl_config * desc: External motor drive interrupt configuration * input: none * output: none * return: none *****************************************/ void EX_Motor_op_cl_config() { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(Motor_OP_PIN_GROUP, Motor_OP_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(Motor_CL_PIN_GROUP, Motor_CL_PIN_NUM, EXTI_FALLING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } /****************************************** * func: EX_Motor_op_cl_config * desc: External motor drive interrupt configuration * input: none * output: none * return: none *****************************************/ void EX_Motor_op_cl_disable(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(Motor_OP_PIN_GROUP, Motor_OP_PIN_NUM, EXTI_FALLING, DISABLE); GPIO_EXTI_Init(Motor_CL_PIN_GROUP, Motor_CL_PIN_NUM, EXTI_FALLING, DISABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } /****************************************** * func: UNCAP_Config * desc: External motor drive interrupt configuration * input: none * output: none * return: none *****************************************/ void UNCAP_Config(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(UNCAP_INT_PIN_GROUP, UNCAP_INT_PIN_NUM, EXTI_FALLING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } /****************************************** * func: Force_Open_Config * desc: External motor drive interrupt configuration * input: none * output: none * return: none *****************************************/ void Force_Open_Config(void) { CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(FORCE_OPEN_INT_PIN_GROUP, FORCE_OPEN_INT_PIN_NUM, EXTI_RISING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } //========ÒÔÏÂÊdzõʼ»¯µÄ²Ù×÷=========================================================================================================================== void BSTimer_Init(uint16_t Psc, uint32_t Arr) { CMU_PERCLK_SetableEx(BSTIMCLK, ENABLE); // ÍâÉè×ÜÏßʱÖÓʹÄÜ CMU_OPCCR2_BSTCKS_Set(CMU_OPCCR2_BSTCKS_SYSCLK); // Ñ¡Ôñ¹¤×÷ʱÖÓÔ´ CMU_OPCCR2_BSTCKE_Setable(ENABLE); // ¹¤×÷ʱÖÓԴʹÄÜ BSTIM_CR1_ARPE_Setable(ENABLE); // Ô¤×°ÔØÊ¹ÄÜ // BSTIM_CR1_OPM_Set(BSTIM_CR1_OPM_STOP); //Update Event·¢Éúʱ¼ÆÊýÆ÷Í£Ö¹£¨×Ô¶¯ÇåÁãCEN£© BSTIM_CR1_OPM_Set(BSTIM_CR1_OPM_CONTINUE); // UE²úÉúʱ¼ÆÊýÆ÷²»Í£Ö¹ BSTIM_PSCR_Write(Psc - 1); BSTIM_ARR_Write(Arr - 1); NVIC_DisableIRQ(BSTIM_IRQn); NVIC_SetPriority(BSTIM_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(BSTIM_IRQn); /*½â¾ö¿ªÆô¶¨Ê±Æ÷»áÖ±½Ó½øÈëÒ»´ÎÖжϵÄÎÊÌâ*/ BSTIM_IER_UIE_Setable(ENABLE); // UpdateÖжÏʹÄÜ BSTIM_CR1_CEN_Setable(ENABLE); // ¼ÆÊýÆ÷ʹÄÜ BSTIM_ISR_UIF_Clr(); } /****************************************** * func: work_mode_sys_init * desc: ³õʼ»¯ÏµÍ³£¬ÅäÖö¨Ê±Æ÷ ºÍ GPIOÒÔ¼°Ïà¹ØµÄÍâÉè¡£ * input: none * output: none * return: none *****************************************/ void work_mode_sys_init() { BSTimer_Init(12000, 1000); // /*ÅäÖÃÄÚ²¿µÄRTCʱÖÓ*/ // ex_rtc_nv_config(); // /* Motor external interrupt*/ // EX_Motor_op_cl_config(); // // /* key interrupt*/ // Key_config(); // // /* LF PULSE interrupt*/ // LOW_PULSE_config(); // // BAT_io_dec_config(); // // HWID0_config(); // // UNCAP_Config(); // // Force_Open_Config(); // // AlarmLine_config(); CMU_OPCCR1_EXTICKSEL_Set(CMU_OPCCR1_EXTICKSEL_LSCLK); // EXTIÖжϲÉÑùʱÖÓÑ¡Ôñ CMU_OPCCR1_EXTICKE_Setable(ENABLE); // EXTI¹¤×÷ʱÖÓʹÄÜ GPIO_EXTI_Init(RTC_INT_PIN_GROUP, RTC_INT_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(Motor_OP_PIN_GROUP, Motor_OP_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(Motor_CL_PIN_GROUP, Motor_CL_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(KEY1_PIN_GROUP, KEY1_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(KEY2_PIN_GROUP, KEY2_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(KEY3_PIN_GROUP, KEY3_PIN_NUM, EXTI_FALLING, ENABLE); // GPIO_EXTI_Init( LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // GPIO_EXTI_Init( ALKA_BAT_M_PIN_GROUP, ALKA_BAT_M_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(HWID0_PIN_GROUP, HWID0_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(UNCAP_INT_PIN_GROUP, UNCAP_INT_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(FORCE_OPEN_INT_PIN_GROUP, FORCE_OPEN_INT_PIN_NUM, EXTI_RISING, ENABLE); GPIO_EXTI_Init(ALARM_LINE_PIN_GROUP, ALARM_LINE_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(HWID0_PIN_GROUP, HWID0_PIN_NUM, EXTI_FALLING, ENABLE); GPIO_EXTI_Init(LIMIT_TRIG_PIN_GROUP, LIMIT_TRIG_PIN_NUM, EXTI_FALLING, ENABLE); /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } /****************************************** * func: gpio_init * desc: ³õʼ»¯ÏµÍ³¶Ë¿ÚIO; * input: none * output: none * return: none *****************************************/ void GPIO_All_Init(void) { /*³õʼ»¯flashºÍÌúµçÄ£¿é*/ Fram_Flash_GPIO_Init(); /*³õʼ»¯RTC¹Ü½Å*/ RTCINT_GPIO_Init(); Low_Pluse_GPIO_Init(); /*³õʼ»¯°´¼ü*/ Key_GPIO_Init(); /*BAT_io*/ BAT_io_dec_init(); // ±¨¾¯ÏßÊäÈ룬ԭÏÈÔ¤Áô£¬ÏÖÔÚ×ö³É±¨¾¯¹Ø·§ÐźÅÏß Alarm_IO_init(); /*switch io*/ SWITCH_GPIO_Init(); /**/ POWER_EX_GPIO_Init(); OUTPUT_EN_GPIO_Init(); Motor_GPIO_Init(); /*Ñ¡ÅäÆ÷¼þ*/ UNCAP_GPIO_Init(); Force_Open_GPIO_Init(); POWER_3V8_Init(); Upper_RS232_GPIO_Init(); GPRS_RS232_GPIO_Init(); RS485_GPIO_Init(); All_NO_USE_GPIO_sleep_mode(); } void All_SPI_Init(void) { CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý AltFunIO(Fram_Flash_SPI_SCL_GROUP, Fram_Flash_SPI_SCL_PIN_NUM, ALTFUN_NORMAL); // SCK AltFunIO(Fram_Flash_SPI_MOSI_PIN_GROUP, Fram_Flash_SPI_MISO_PIN_NUM, ALTFUN_NORMAL); // MISO AltFunIO(Fram_Flash_SPI_MISO_PIN_GROUP, Fram_Flash_SPI_MOSI_PIN_NUM, ALTFUN_NORMAL); // MOSI CMU_PERCLK_SetableEx(SPI3CLK, ENABLE); // ¿ªÆôSPI3×ÜÏßʱÖÓ SPIx_CR1_IOSWAP_Set(SPI3, SPIx_CR1_IOSWAP_DEFAULT); // MISO¡¢MOSIĬÈÏÒý½Å ²»½»»» SPIx_CR1_MM_Set(SPI3, SPIx_CR1_MM_MASTER); // masterģʽ SPIx_CR1_WAIT_Set(SPI3, SPIx_CR1_WAIT_1WAIT); // ÿ·¢ËÍÍêÒ»Ö¡ºó²åÈëÒ»¸öCLK SPIx_CR1_BAUD_Set(SPI3, SPIx_CR1_BAUD_DIV4); // ²¨ÌØÂÊÉèÖÃΪÍâÉèʱÖÓ2·ÖƵ SPIx_CR1_LSBF_Set(SPI3, SPIx_CR1_LSBF_MSB); // Ö¡¸ñʽÏÈ·¢ËÍMSB SPIx_CR1_CPHOL_Set(SPI3, SPIx_CR1_CPHOL_LOW); // CLKÍ£Ö¹ÔÚµÍµçÆ½ SPIx_CR1_CPHA_Set(SPI3, SPIx_CR1_CPHA_1CLOCK); // µÚÒ»¸öʱÖÓ±ßÑØ²¶×½ SPIx_CR2_SSNSEN_Setable(SPI3, DISABLE); // SSNÓÉÓ²¼þ¿ØÖÆ SPIx_CR2_RXO_Setable(SPI3, DISABLE); // SPIÉèÖÃΪȫ˫¹¤ SPIx_CR2_DLEN_Set(SPI3, SPIx_CR2_DLEN_8BIT); // ͨÐÅÊý¾Ý×Ö³¤8bit SPIx_CR2_HALFDUPLEX_Set(SPI3, SPIx_CR2_HALFDUPLEX_SPI); // SPIÉèÖÃΪ±ê×¼SPIģʽ SPIx_CR2_SSNM_Set(SPI3, SPIx_CR2_SSNM_LOW); // ÿ´Î·¢Íêmasterºóssn±£³ÖµÍ SPIx_CR2_TXO_AC_Setable(SPI3, DISABLE); // ¹Ø±ÕTXONLY×Ô¶¯Çå0 SPIx_CR2_TXO_Setable(SPI3, DISABLE); // ¹Ø±ÕTXONLYģʽ SPIx_CR3_SERRC_Clr(SPI3); // Çå³ý´Ó»ú´íÎó±êÖ¾ SPIx_CR3_MERRC_Clr(SPI3); // Çå³ýÖ÷»ú´íÎó±êÖ¾ SPIx_CR3_RXBFC_Clr(SPI3); // Çå³ýRXBUF SPIx_CR3_TXBFC_Clr(SPI3); // Çå³ýTXBUF SPIx_CR2_SPIEN_Setable(SPI3, ENABLE); // ʹÄÜSPI3 } void UTR_init(void) { // ÉÏλ»úUART UTR_Uart_Init(115200); Upper_RS232_GPIO_Init(); } void All_init(void) { GPIO_InitTypeDef GPIO_InitStructure; // /*³õʼ»¯flashºÍÌúµçÄ£¿é*/ Fram_Flash_GPIO_Init(); RTC_GPIO_Init(); All_NO_USE_GPIO_sleep_mode(); All_SPI_Init(); }