From 6ea1a42391f86e72f53042a966dae970a3fd77cb Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Fri, 17 May 2024 17:18:57 +0800
Subject: [PATCH] 阀门控制进一步完善

---
 Soft/system_general_para.c |   86 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 4 deletions(-)

diff --git a/Soft/system_general_para.c b/Soft/system_general_para.c
index 0ad8d5b..790c20c 100644
--- a/Soft/system_general_para.c
+++ b/Soft/system_general_para.c
@@ -1,5 +1,6 @@
 #include "system_general_para.h"
 #include "main.h"
+#include "extern_rtc.h"
 
 //uint8_t read_data_buf_A_l[200] ={0};
 //uint8_t read_data_buf_B_l[200] ={0};
@@ -16,6 +17,9 @@
 	
 };
 
+FUN_START_CTRL_PARA_T sys_fun_run_ctrl_g;
+
+
 /*******************���õĴ��빤��********************************/
 /******************************************
  * func: ucharcmp
@@ -24,9 +28,9 @@
  * output: none
  * return: none
  *****************************************/
-ErrorStatus  ucharcmp(uint8_t *dataA,uint8_t *dataB,u16 data_length)
+ErrorStatus  ucharcmp(uint8_t *dataA,uint8_t *dataB,uint16_t data_length)
 {
-	u16 index_i=0;
+	uint16_t index_i=0;
 	ErrorStatus return_flag=FAIL;
 	for(index_i=0;index_i<data_length;index_i++)
 	{
@@ -58,9 +62,9 @@
  * output: none
  * return: none
  *****************************************/
-void arrayA_2_arrayB(uint8_t * aA , uint8_t * aB, u16 len, BIG_OR_LITTLE_ENDIAN mode)  
+void arrayA_2_arrayB(uint8_t * aA , uint8_t * aB, uint16_t len, BIG_OR_LITTLE_ENDIAN mode)  
 {
-	u16 index;
+	uint16_t index;
 	uint8_t *ptra,*ptrb;
 	
 	if(mode==LITTLE_ENDIAN)
@@ -87,3 +91,77 @@
 	}
 }
 
+
+
+
+/******************************************
+ * func: IntervalTriggerHandle
+ * desc: ���������ֻ����1���ڵģ����ʱ������1��IJ����ǣ�����1���ڵļ��60���Ӵ���һ��
+ * input: IntervalTime���ʱ�䣬��λ��  ; IntervalFirstTimeBCD�״�ʱ��,ʱ���֣�ʱ��ǰ 
+ * output: FlagStatus  SET��ʾ��Ч
+ * return: none
+ *****************************************/
+FlagStatus IntervalTriggerHandle(sClockBCD sys_clockBCD_in,uint16_t IntervalTime,uint8_t *IntervalFirstTimeBCD)
+{
+	//����ϱ���ʱ�����Ǽ������1440���ӣ�Ҳ���dz���1�졣
+	uint16_t  FirstTime; //�״��ϱ�ʱ�䣬����ɷ���
+	uint16_t  NextTime; //�´��ϱ�ʱ�䣬����
+	uint16_t  CurrentTime;//��ǰʱ�䣬����ɷ���
+	uint16_t  Count_i=0;
+	uint16_t  ComparisonsNumber;
+	
+
+	if(IntervalTime==0)
+	{
+		return RESET;
+	}
+	
+	FirstTime = (uint16_t)BCD_2_DECIMAL(IntervalFirstTimeBCD[0]) * 60 + BCD_2_DECIMAL(IntervalFirstTimeBCD[1]);
+	
+	CurrentTime = (uint16_t)BCD_2_DECIMAL(sys_clockBCD_in.hour) *60 + BCD_2_DECIMAL(sys_clockBCD_in.min);
+	NextTime = FirstTime; 
+	
+	ComparisonsNumber = (IntervalTime !=0)? 1440/IntervalTime +1 : 1;
+	
+	if(sys_clockBCD_in.sec == 0) //Ϊ�˼�����Դ�˷ѣ�ֻ��������=0ʱ�ж�
+	{
+		for(Count_i =0;Count_i<ComparisonsNumber;Count_i++)  
+		{			
+			if(NextTime == CurrentTime )
+			{
+				return SET;								
+			}
+			else
+			{
+				NextTime = NextTime + IntervalTime; //�´��ϱ�ʱ���
+				if(NextTime>=1440)
+				{
+					NextTime -=1440;
+				}
+			}			
+		}
+	}
+	
+	return RESET;
+}
+
+//IO���ӳ��������
+FlagStatus IO_JitterEliminationCheck(GPIO_Type* GPIOx, uint32_t GPIO_Pin,uint16_t delay_time_ms,BitAction bit_status)
+{
+	if(delay_time_ms>1000)  //Ŀǰ�����1000ms��ʱ��̫����ϵͳ���Ӱ��
+		return RESET;
+	
+	if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == bit_status){
+		if(delay_time_ms > 0)
+			delay_ms(delay_time_ms);
+		if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == bit_status){
+			return SET;
+		}else{
+			return RESET;
+		}
+		
+	}else{
+		return RESET;
+	}
+	
+}

--
Gitblit v1.9.3