/* * @Description: * @Version: 1.0 * @Autor: lzc * @Date: 2022-09-09 08:31:26 * @LastEditors: lzc * @LastEditTime: 2022-09-13 10:36:57 */ #include "main.h" /*下面的方式是通过直接操作库函数方式读取IO*/ #define KEY_CAL GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10) // PB10 #define KEY_WPS GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) // PB11 char upgrade_flag = 0; void check_upgrade_flag(void) { if ((*(__IO uint32_t *)FLASH_DATA_FLAG_ADDR) == FLASH_DATA_FLAG) // 1010--准备升级 { upgrade_flag = 0; FLASH_Unlock(); FLASH_EraseSector(FLASH_Sector_2, VoltageRange_3); FLASH_ProgramWord(FLASH_DATA_FLAG_ADDR, FLASH_OLD_FLAG); //启动老程序 // flash_write_version(version); FLASH_Lock(); } else if ((*(__IO uint32_t *)FLASH_DATA_FLAG_ADDR) == FLASH_START_FLAG) // 1111--升级完成 { upgrade_flag = 1; } else if ((*(__IO uint32_t *)FLASH_DATA_FLAG_ADDR) == FLASH_OLD_FLAG) // 0101--启动老程序 { upgrade_flag = 2; } else { upgrade_flag = 2; } } // uint32_t value=0x01000002; int main(void) { System_Init(); check_upgrade_flag(); // TODO: 增加恢复出厂设置按键 if ((KEY_CAL == RESET) && (KEY_WPS == RESET)) { delay_ms(1000); //防止误触 if ((KEY_CAL == RESET) && (KEY_WPS == RESET)) { FLASH_Unlock(); FLASH_EraseSector(FLASH_Sector_2, VoltageRange_3); FLASH_ProgramWord(FLASH_DATA_FLAG_ADDR, FLASH_OLD_FLAG); //启动老程序 FLASH_Lock(); upgrade_flag = 2; } } if (upgrade_flag != 0) { execute_app(); /*执行用户程序*/ } while (1) { LED_R = 0; boot_ReceiveHdl(); upgrade_menu(); } }