From 31a18a379b5d7073705895dba364ca3b76d5d44e Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期三, 13 八月 2025 09:54:25 +0800
Subject: [PATCH] 开发完成

---
 keil/include/main/main.c |  211 +++++++++++++++++++---------------------------------
 1 files changed, 78 insertions(+), 133 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 4399dbf..9567729 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -118,6 +118,7 @@
 uint8_t group_id,enable_sleep_count;
 uint32_t dev_id;
 uint16_t disoffset;
+uint16_t set_mk_time;
 uint8_t flag_sleeptimer,flag_secondtask,secondtask_count;
 float nomove_count;
 // Default pool descriptor.
@@ -129,6 +130,8 @@
 {
     // LOG_INFO(TRACE_MODULE_APP, "Wake up by sleep timer %d\r\n", time);
 }
+extern uint8_t start_wait_flag;
+extern int16_t end_count1;
 static void sleep_timer_callback_normal(void *dev, uint32_t time)
 {
    if(secondtask_count++%2==0)
@@ -137,12 +140,18 @@
     }else{
         flag_secondtask = 0;
     }
+		if(start_wait_flag)//lora升级等待超时标志
+		{
+		if(end_count1--<=0)
+		start_wait_flag=0;
+		}
 // if(delaysleep_count>0)
 //     delaysleep_count--;
 }
 void Program_Init(void)
 {
     Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为
+		
     parameter_init_anchor();//g_com_map表初始化角色默认为基站
     dev_id=g_com_map[DEV_ID];//这里不太对
     group_id=(uint8_t)g_com_map[GROUP_ID];//组ID
@@ -168,7 +177,11 @@
     port = g_com_map[TCP_PORT];
     g_com_map[VERSION] = (1<<8)|0;
     LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
-    LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+//		if(gpio_pin_get_val(MODE_CHANGE_PIN))
+//    LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_Air_tag模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+//		else{
+//		LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_免布线模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+//		}
     LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
 }
 void MinuteTask(void)
@@ -182,12 +195,14 @@
 }
 void SecondTask(void)
 {static uint8_t second_count;
+	
     if(second_count++>60)
     {
         second_count = 0;
         MinuteTask();
     }
-		lora_tx_flag=1;
+	lora_tx_flag=1;
+		
 		//Lora_Tx_Poll();
 //    //UWB状态检测
 //if(!power_low_flag)//低供电下不需要检测重连
@@ -296,11 +311,12 @@
     // Configure IO_04 for RF Switch
     gpio_pin_set_dir(IO_PIN_4, GPIO_DIR_OUT, 0);
 #else
-		Program_Init();
+
 		spi_init();
-    // 模式判断脚和spi nrst脚初始化
+//    // 模式判断脚和spi nrst脚初始化
     board_mode_pin_init();
-//    board_led_on(BOARD_LED_1);
+    Program_Init();
+    //board_led_on(BOARD_LED_1);
 #endif
 		Board_LORA_NVIC_Init(Lora_irq_handler);
     board_configure();
@@ -336,144 +352,73 @@
 {
     uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
 }
-
+void uart0_receive_callback(void *dev, uint32_t err_code)
+{
+    uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback);
+}
 uint8_t bat_percent;
+uint8_t  stationary_flag;
+extern uint8_t send_flag;
+extern uint8_t txdone;
+void mcu_deep_sleep(void)
+{
+            uint32_t lock;
+            trace_flush();
+	
+            lock = int_lock();
+							sleep_timer_stop();	
+            power_enter_power_down_mode(1);
+            int_unlock(lock);
+}
+uint8_t result11;
 int main(void)
-{		
+{		  
 	// Initialize MCU system
     board_init();
-	 // Disable watchdog timer
     wdt_close(WDT_ID0);
-    LOG_INFO(TRACE_MODULE_APP, "UCI FiRa example\r\n");
-	if(gpio_pin_get_val(MODE_CHANGE_PIN))
-	{
-   
-		
-		// Platform init for WSF
-    PalSysInit();
-
-    // Initialize os
-
-    //
-    // Set up timers for the WSF scheduler.
-    //
-    WsfOsInit();
-    WsfTimerInit();
-    sys_tick_callback_set(WsfTimerUpdateTicks);
-
-    //
-    // Initialize a buffer pool for WSF dynamic memory needs.
-    //
-    uint32_t wsfBufMemLen = WsfBufInit(WSF_BUF_POOLS, poolDescriptors);
-
-    if (wsfBufMemLen > FREE_MEM_SIZE)
     {
-        LOG_INFO(TRACE_MODULE_APP, "Memory pool is not enough %d\r\n", wsfBufMemLen - FREE_MEM_SIZE);
-    }
-//
-    // Create app task
-    //
-   wsfHandlerId_t handlerId = WsfOsSetNextHandler(app_handler);
-    app_init(handlerId);
-
-    //
-    // Create ranging task or test task
-    //
-    handlerId = WsfOsSetNextHandler(ranging_handler);
-    ranging_init(handlerId);
-
-#ifdef UWB_UCI_TEST_EN
-    // Create test task
-    handlerId = WsfOsSetNextHandler(uwb_test_handler);
-    uwb_test_init(handlerId);
-#endif
-
-#ifndef MY_MODE
-    uwb_open();
-
-    // set advanced parameters
-    struct PHY_ADV_CONFIG_T adv_config =
-    {
-        // RPM0: 40, RPM3: 60
-        .thres_fap_detect = 60,
-        // RPM0: 4, RPM3: 8
-        .nth_scale_factor = 8,
-        // RFrame SP0: 0/1, Others: 0/1/2/3
-        .ranging_performance_mode = 3,
-#if RX_ANT_PORTS_NUM == 4
-        .skip_weakest_port_en = 1,
-#else
-        .skip_weakest_port_en = 0,
-#endif
-    };
-    phy_adv_params_configure(&adv_config);
-
-    // which RX ports will be used for AoA/PDoA
-    phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION);
-
-    uwbs_init();
-    uwb_app_config.ranging_flow_mode = (uint8_t)(RANGING_FLOW_FIRA);
-    uwb_app_config.filter_en = (uint8_t)(FILTER_EN);
-    uwb_app_config.session_param.tx_power_level = board_param.tx_power_fcc[CALIB_CH(uwb_app_config.ppdu_params.ch_num)];
-    uwb_app_config.ppdu_params.rx_ant_id = (uint8_t)(RX_MAIN_ANT_PORT);
-	
-#elif defined MY_MODE
-		Uwb_init();//默认为我们测距配置
-		OpenUWB();
-		uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
-#endif
-    //
-    // Create UCI transmission layer task
-    //
-    handlerId = WsfOsSetNextHandler(uci_tl_handler);
-    uci_tl_init(handlerId);
-
-    // Initialize low power mode
-    power_init();
-#if LOW_POWER_EN
-    power_mode_request(POWER_UNIT_USER, POWER_MODE_POWER_DOWN);
-    uwb_app_config.low_power_en = 1;
-#else
-    power_mode_request(POWER_UNIT_USER, POWER_MODE_SLEEP);
-    uwb_app_config.low_power_en = 0;
-#endif
-
-    // Enable sleep timer
-    sleep_timer_open(true, SLEEP_TIMER_MODE_ONESHOT, sleep_timer_callback);
-		
-    while (1)
-    {
-        wsfOsDispatcher();
-#ifdef MY_MODE
-				if(normal_flag)
-				{
-				IdleTask();
-				}
-#endif
-        power_manage();
-    }
-	}else{
-//				 adc_open(&usr_adc_cfg);
+		LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_lora升级模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+		uart0_Init_normal();
 		Lora_1268_Init();
-		SwitchLoraSettings(478,7,22);
-		Uwb_init();//默认为我们测距配置
-		OpenUWB();
+		 //LOG_INFO(TRACE_MODULE_APP," 切换6\r\n");
+		SwitchLoraSettings(0x1f4,7,22);
+//		Uwb_init();//默认为我们测距配置
+//		OpenUWB();
 		uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
-    power_init();
-    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback_normal);
-		sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试
-			 while (1)
-				{
-				uwb_app_poll();//我们的测距逻辑
-					Lora_Tx_Poll();
-					
-				if(flag_secondtask)
+		uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback);
+        power_init();
+        uint16_t tmp = 0xFFFF;
+        result11 = flash_open(FLASH_ID0,NULL);
+        if(!result11)
         {
-            flag_secondtask = 0;
-            SecondTask();
+        LOG_INFO(TRACE_MODULE_APP," 打开flash成功\r\n");
         }
-				IdleTask();
-				}
+        result11 = flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APPFLAG
+        if(!result11)
+        {
+        LOG_INFO(TRACE_MODULE_APP," 擦除标志位成功\r\n");
+        }
+        result11 = flash_write_nbytes(FLASH_ID0,APP_CONFIG_IAPFLAG_MAP,(uint8_t*)&tmp,2);
+        if(!result11)
+        {
+        LOG_INFO(TRACE_MODULE_APP," 写入标志位FFFF成功\r\n");
+        }
+        delay_ms(100);
+        sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback_normal);
+		sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试
+        while (1)
+        {
+//            uwb_app_poll();//我们的测距逻辑
+//            if(flag_secondtask)
+//            {
+//            flag_secondtask = 0;
+//            SecondTask();
+//                    //Lora_Tx_Poll();
+//            }
+//            Lora_Tx_Poll();	
+            LoraUp_Poll();//网关升级
+            IdleTask();
+        }
 	}    
 
 }

--
Gitblit v1.9.3