yincheng.zhong
2023-01-04 ab16ddec95bf2abfed4a7b19ef59444b1a75f126
Src/application/serial_at_cmd_app.c
@@ -68,7 +68,30 @@
         {
            case CMD_WRITE:
               //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中
               memcpy((uint8_t*)&g_com_map + pack_index, mUsartReceivePack, pack_datalen);
                memcpy((uint8_t*)&g_com_map + pack_index, mUsartReceivePack, pack_datalen);
                    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();
                        delay_ms(100);
                        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
                    }
               //返回一个error状态
               //SendComMap(pack_datalen,pack_index);
               save_com_map_to_flash();