From 4979f7565cbd5f093e280f9f277ae29bb450acb8 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期六, 15 九月 2018 17:28:24 +0800
Subject: [PATCH] 增加低功耗标签

---
 源码/核心板/Src/main.c |   91 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 80 insertions(+), 11 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
index 21cdfa8..b2dd27c 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
@@ -8,13 +8,15 @@
 #include "dw_app.h"
 #include "filters.h"
 #include "stm32f10x_it.h"
+#include "serial_at_cmd_app.h"
+#include "deca_device_api.h"
 
 //#define WORK_MODE_TAG
 #define WORK_MODE_ANCHOR
-#define START_ALARM_DIST_CM			500
+#define START_ALARM_DIST_CM			200
 #define BEEM_ON_TIME_MS				200
 
-float dis_after_filter = 0;
+float dis_after_filter = 500;
 
 void Device_Init(void)
 {
@@ -22,13 +24,22 @@
 	SystemInit();
 	Nvic_Init();
 	Systick_Init();
+#ifdef WORK_MODE_TAG	
+	RTC_Configuration();
+#endif
 	Led_Init();
 	Beep_Init();
 	DW_GPIO_Init();
-	Usart_Init();
+	Uart1_Init();
 	Spi_Init();
 	
+	
 	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
+}
+
+void Parameter_Init(void)
+{
+	Usart1ParseDataCallback = UsartParseDataHandler;
 }
 
 /*! ------------------------------------------------------------------------------------------------------------------
@@ -40,38 +51,96 @@
  *
  * @return none
  */
+extern uint8_t send_start;
 int main(void)
 {
 	LPFilter_Frac* p_Dis_Filter;
 	
 	Device_Init();
+	Parameter_Init();
 	Dw1000_Init();
-	p_Dis_Filter = New_LP_Frac(0.9);
+	p_Dis_Filter = New_LP_Frac(0.7);
 
+	#ifdef WORK_MODE_TAG
+   dwt_configuresleep(0x940, 0x7);
+	 _dwt_aonarrayupload();
+	//dwt_entersleep();
+	#endif
+	
     /* Loop forever initiating ranging exchanges. */
 	while(1)
 	{
 #ifdef WORK_MODE_TAG
+		
+	if(send_start)
+	{send_start=0;
 		Tag_App();
+	}
+	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
+PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);	
 #else 
 		Anchor_App();
+
 #endif
+		
 		//除UWB之外的其他代码...
 		dis_after_filter = LP_Frac_Update(p_Dis_Filter, dist_cm);
 		
-		if(dis_after_filter <= START_ALARM_DIST_CM)
+		if(dis_after_filter <= g_alarm_dist)
 		{
-			g_beep_off_time = (uint32_t)dis_after_filter * 10;
-			if(g_beep_off_time <= 0) 
-				g_beep_off_time = 0;
-			g_beep_on_time = BEEM_ON_TIME_MS; 
+//			g_beep_off_time = (uint32_t)dis_after_filter * 10;
+//			if(g_beep_off_time <= 0) 
+//				g_beep_off_time = 0;
+//			g_beep_on_time = BEEM_ON_TIME_MS;
+			switch(g_alarm_dev) 
+			{
+				case 0:
+					BEEP2_ON;
+					BEEP_OFF;
+					OUT2_OFF;
+					break;
+				case 1:
+					BEEP_ON;
+					BEEP2_OFF;
+					OUT2_OFF;
+					break;
+				case 2:
+					OUT2_ON;
+					BEEP_OFF;
+					BEEP2_OFF;
+					break;
+				default:
+					BEEP2_ON;
+					BEEP_ON;
+					OUT2_ON;
+					break;
+			}
 		}
 		else
 		{
-			g_beep_on_time = 0;
-			g_beep_off_time = 0;
+//			g_beep_on_time = 0;
+//			g_beep_off_time = 0;
+			switch(g_alarm_dev) 
+			{
+				case 0:
+					BEEP2_OFF;
+					break;
+				case 1:
+					BEEP_OFF;
+					break;
+				case 2:
+					OUT2_OFF;
+					break;
+				default:
+					BEEP2_OFF;
+					BEEP_OFF;
+					OUT2_OFF;
+					break;
+			}
 		}
 		
+
+		
 	}
 }
 

--
Gitblit v1.9.3