From 603876aab99a1fe5eb012e1ef13fa1fc02b0b717 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期三, 21 十二月 2022 09:40:18 +0800
Subject: [PATCH] V1.41 修改恢复出厂 升级 逻辑

---
 Src/application/serial_at_cmd_app.c |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/Src/application/serial_at_cmd_app.c b/Src/application/serial_at_cmd_app.c
index 996b9e4..e753101 100644
--- a/Src/application/serial_at_cmd_app.c
+++ b/Src/application/serial_at_cmd_app.c
@@ -42,7 +42,36 @@
 	
 	UART_PushFrame(send_frame, data_length+9);	
 }
-
+void CheckUsartRec(uint8_t index,uint8_t value)
+{
+    if(index==2*CNT_UPDATE&&value==1)
+    {
+        uint32_t result = 0;
+        uint16_t tmp = 0xAAAA;
+        __disable_irq();
+        result = FLASH_Prepare(0x8004A38, 128);
+        if(result)
+        result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); 
+        __enable_irq();
+        printf("进入升级模式\r\n");
+        g_com_map[CNT_UPDATE]=0;
+        save_com_map_to_flash();
+        delay_ms(100);
+        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+    }
+    if(index ==2*CNT_REBOOT&&value==1)
+    {
+        ReturnFactory();
+        save_com_map_to_flash();
+        delay_ms(100);
+        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+    }
+    if(index==2*CNT_RESTART&&value==1)
+    {
+        delay_ms(100);
+        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+    }
+}
 void UsartParseDataHandler(uint8_t data)
 {
 	static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0;
@@ -68,6 +97,7 @@
 			{
 				case CMD_WRITE:
 					//从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中
+                    CheckUsartRec(pack_index,mUsartReceivePack[0]);
 					memcpy((uint8_t*)&g_com_map + pack_index, mUsartReceivePack, pack_datalen);
 					//返回一个error状态
 					//SendComMap(pack_datalen,pack_index);

--
Gitblit v1.9.3