From 55579b9ada2fc22edcae817e7d6e65710c47edd3 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期一, 29 七月 2024 18:04:28 +0800
Subject: [PATCH] 能够SS测距与MK8000_SS_demo_Anchor配合使用

---
 keil/include/main/main.c |  216 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 150 insertions(+), 66 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index d428246..f023d75 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -49,71 +49,20 @@
 #include "board.h"
 #include "wsf_nvm.h"
 #include "mk_power.h"
+#include "mk_sleep_timer.h"
 #include "Usart.h"
-
 extern int simple_main(void);
+extern void parameter_init(void);
 uint8_t trx_buf[10] = {0};
 #define TEST_UART_POLL_MODE 0
 #define TEST_UART_INTERUPT_MODE 1
 #define TEST_UART_DMA_MODE 2
 #define TEST_UART_MODE TEST_UART_DMA_MODE
-extern uint8_t mUsartReceivePack[100];
-extern uint8_t mUsart2ReceivePack[100];
-uint32_t dev_id;
-uint8_t group_id;
-uint16_t tag_frequency;
-uint16_t disoffset;
-void Program_Init(void)
-{	
-Usart1ParseDataCallback = UsartParseDataHandler;
-parameter_init_anchor();//g_com_map表初始化角色默认为基站
-dev_id=g_com_map[DEV_ID];//这里不太对
-group_id=g_com_map[GROUP_ID];//组ID
-tag_frequency = 1000/g_com_map[COM_INTERVAL];//测距频率这个存的是测距时间
-memcpy(&disoffset,&g_com_map[DIST_OFFSET],2);
-}
-static void uart_receive_callback(void *dev, uint32_t err_code)
-{		
-	
-}
-int main(void)
+
+
+//#define DEBUG_MODE
+struct UART_CFG_T test_uart_cfg =
 {
-    board_clock_run();
-    board_pins_config();
-    board_debug_console_open(TRACE_PORT_UART0);
-	    // Reset reason
-    reset_cause_get();
-    reset_cause_clear();
-		
-    // Load calibration parameters from NVM
-    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
-    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
-    if (internal_flash || external_flash == 1)
-    {
-        WsfNvmInit();
-        board_calibration_params_load();
-        flash_close(FLASH_ID0);
-    }
-    else
-    {
-        board_calibration_params_default();
-    }
-
-    // Chip calibration
-    calib_chip();
-
-    // Disable watchdog timer
-    wdt_close(WDT_ID0);
-    LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
-
-    // open system timer
-    //sys_timer_open();
-		
-    gpio_open();
-    board_led_init();
-	
-		 struct UART_CFG_T test_uart_cfg =
-    {
         .parity = UART_PARITY_NONE,
         .stop = UART_STOP_BITS_1,
         .data = UART_DATA_BITS_8,
@@ -135,22 +84,157 @@
         .int_tx = false,
 #endif
 		};
-		 //flash_open(FLASH_ID0, NULL);
+uint8_t state5v = 1;
+uint8_t bat_percent=0,g_start_send_flag=1;
+extern uint32_t dev_id;
+extern uint8_t group_id;
+uint8_t tag_frequence;
+void UartDeinit(void);
+void UartInit(void);
+void Program_Init(void);
+void IdleTask(void);
+static void uart_receive_callback(void *dev, uint32_t err_code)
+{		
+uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
+}
+void UartInit(void)
+{
+board_pins_config();
+uart_open(UART_ID1, &test_uart_cfg);
+board_debug_console_open(TRACE_PORT_UART0);
+uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
+}
+void UartDeinit(void)
+{
+uart_close(UART_ID0);
+uart_close(UART_ID1);
+}
+static void sleep_timer_callback(void *dev, uint32_t time)
+{
+    //sleep_timer_start(__MS_TO_32K_CNT(1000));
+		g_start_send_flag=1;
+    LOG_INFO(TRACE_MODULE_APP, "Sleep timer interrupt callback\r\n");
+}
+static void voltage_input_handler(enum IO_PIN_T pin)
+{
+
+}
+void Program_Init(void)
+{	
+Usart1ParseDataCallback = UsartParseDataHandler;
+parameter_init();//g_com_map表初始化
+group_id=g_com_map[GROUP_ID];
+memcpy(&dev_id ,&g_com_map[DEV_ID],2);
+tag_frequence=1000/g_com_map[COM_INTERVAL];	
+}
+void IdleTask(void)
+{
+	if(gpio_pin_get_val(INPUT_5V_Pin))
+	{
+        	
+    UART_CheckReceive();
+		//UART_CheckSend();
+// bat_percent=Get_Battary();
+		if(state5v==0)
+		{
+			state5v=1;
+			UartInit();
+		}
+//		if(bat_percent>99)
+//		{
+////			LED_LR_OFF;
+////			LED_LG_ON;
+//		}else{
+////			LED_LR_ON;
+////			LED_LG_OFF;		
+//		}		
+	}else{
+        if(state5v==1)
+        {
+            state5v=0;
+					//UartDeinit();
+        }
+//		LED_LR_OFF;
+//		LED_LG_OFF;
+}
+//        if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
+//		{
+//            NVIC_SystemReset(); //软复位回到bootloader   
+//		}
+}
+
+
+int main(void)
+{
+    board_clock_run();
+    board_pins_config();
+    board_debug_console_open(TRACE_PORT_UART0);
+	    // Reset reason
+    reset_cause_get();
+    reset_cause_clear();
+    // Load calibration parameters from NVM
+    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
+    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
+    if (internal_flash || external_flash == 1)
+    {
+        WsfNvmInit();
+        board_calibration_params_load();
+        flash_close(FLASH_ID0);
+    }
+    else
+    {
+        board_calibration_params_default();
+    }
+
+    // Chip calibration
+    calib_chip();
+
+    // Disable watchdog timer
+    wdt_close(WDT_ID0);
+    LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
+		
+    // open system timer
+    //sys_timer_open();
+		
+    gpio_open();
+    //board_led_init();
+		
 		 uart_open(UART_ID1, &test_uart_cfg);
-			Program_Init();
-		 uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
+				Program_Init();
 		 //power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)POWER_WAKEUP_BY_GPIO_0, POWER_WAKEUP_LEVEL_LOW);
-		 //uart_receive(UART_ID1, trx_buf, 1, uart_receive_callback);
-		
-//		board_led_off(BOARD_LED_1);
-//		board_led_off(BOARD_LED_2);
-		
+		 uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
+		// Initialize low power mode
+    power_init();
+    // Enable sleep timer
+    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
+		//sleep_timer_start(__MS_TO_32K_CNT(1000));
+		board_5V_input_init(voltage_input_handler);
 //    // run simple
     //simple_main();
 
     while (1)
     {
-			UART_CheckReceive();
+			if(g_start_send_flag)
+			{
+			//g_start_send_flag = 0;//测试
+			//LOG_INFO(TRACE_MODULE_APP, "测距ing");
+			//sleep_timer_start(__MS_TO_32K_CNT(1000));//测试
 			simple_main();
+			IdleTask();	
+			}else{
+			IdleTask();	
+			} 
+#ifdef DEBUG_MODE
+			if(!gpio_pin_get_val(INPUT_5V_Pin)){
+						trace_flush();
+            uint32_t lock = int_lock();
+						LOG_INFO(TRACE_MODULE_APP, "进入低功耗");
+						//唤醒源设置MK8000修改
+						//board_5V_input_init(voltage_input_handler);
+						sleep_timer_start(__MS_TO_32K_CNT(1000));
+            power_enter_power_down_mode(0);
+            int_unlock(lock);
+			}
+#endif
     }
 }

--
Gitblit v1.9.3