67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
/*
|
|
* @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();
|
|
}
|
|
}
|