From 9635c1ec8bab034040f3ada3e5e368a6fb9e5e7a Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期日, 21 一月 2024 18:56:53 +0800 Subject: [PATCH] V1.42 随机时间片 --- Src/application/serial_at_cmd_app.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/Src/application/serial_at_cmd_app.c b/Src/application/serial_at_cmd_app.c index 996b9e4..562d320 100644 --- a/Src/application/serial_at_cmd_app.c +++ b/Src/application/serial_at_cmd_app.c @@ -42,7 +42,38 @@ UART_PushFrame(send_frame, data_length+9); } +void updatecheck(void) +{ + if(g_com_map[CNT_UPDATE]==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); + // STMFLASH_Write_NoCheck(0x8004A38,0xAAAA); + // Delay_ms(100); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } + if(g_com_map[CNT_REBOOT]==1) + { + ReturnFactorySettings(); + save_com_map_to_flash(); + delay_ms(100); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } + if(g_com_map[CNT_RESTART]==1) + { + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } +} void UsartParseDataHandler(uint8_t data) { static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0; @@ -69,6 +100,7 @@ case CMD_WRITE: //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中 memcpy((uint8_t*)&g_com_map + pack_index, mUsartReceivePack, pack_datalen); + updatecheck(); //返回一个error状态 //SendComMap(pack_datalen,pack_index); save_com_map_to_flash(); -- Gitblit v1.9.3