Bootloader程序中的判断:
static void System_LED_Control(void)
{
static uint32_t time_delay = 0;
static uint8_t ledsys_cnt = 0;
time_delay++;
if(time_delay % 100 == 0)
{
ledsys_cnt++;//设置缓慢亮灯模式
}
/* Act灯与 Flt故障灯运行逻辑 系统初始化后即启动 */
DS_master.Dev_LED.Act = (ledsys_cnt%2) ? 1 : 0;
DS_master.Dev_LED.Flt = (ledsys_cnt%2) ? 0 : 1;
}
/* APP状态标志位判断 */
static void System_Status_Judge(void)
{
uint16_t Goto_app_flag = 0;
static uint32_t timedelay_2s = 0;
static uint32_t timedelay_5s = 0;
if(timedelay_2s < 200)
{
timedelay_2s++;
}else{
/* 100ms进行跳转状态读取 */
Goto_app_flag = RTC_ReadBackupRegister(RTC_BKP_DR1);
if (Goto_app_flag == 0X0000) /* 第一次配置使用 */
{
/* 延时等待发送完成 */
if(timedelay_5s < 500)
{
timedelay_5s++;
}else{
/* 直接跳转到APP */
iap_goto_app();
}
}
}
}
void SystemEngine_Low_Task(void)
{
/* LED工作逻辑 */
System_LED_Control();
/* LED外设控制*/
DRV_LED_Refrush();
System_Status_Judge();
}
APP程序中的判断:
static void System_LED_Control(void)
{
static uint16_t time_delay = 0;
static uint8_t ledsys_cnt = 0;
time_delay++;
if(time_delay % 10 == 0)
{
ledsys_cnt++;//设置快速亮灯模式
}
/* Act灯与 Flt故障灯运行逻辑 系统初始化后即启动 */
DS_master.Dev_LED.Act = (ledsys_cnt%2) ? 1 : 0;
DS_master.Dev_LED.Flt = (ledsys_cnt%2) ? 0 : 1;
}
/* APP状态标志位判断 */
void SystemEngine_High_Task(void)
{
uint16_t Goto_app_flag = 0;
static uint32_t timedelay_2s = 0;
static uint32_t timedelay_5s = 0;
if(timedelay_2s < 200)
{
timedelay_2s++;
}else{
/* 100ms进行跳转状态读取 */
Goto_app_flag = RTC_ReadBackupRegister(RTC_BKP_DR1);
if (Goto_app_flag == 0X0001) /* 第一次配置使用 */
{
/* 延时等待发送完成 */
if(timedelay_5s < 500)
{
timedelay_5s++;
}else{
/* 直接跳转到BOOTLoad */
soft_reset();
}
}
}
}
void SystemEngine_Low_Task(void)
{
/* LED工作逻辑 */
System_LED_Control();
/* LED外设控制*/
DRV_LED_Refrush();
}