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