/******************************************************************************* * the includes ******************************************************************************/ /******************************************************************************* * the defines ******************************************************************************/ #include "appTask.h" #include "uart.h" #include "lin.h" #include "user_init.h" #include "sleep.h" #include "svd.h" #include "iwdt.h" #include "rmu.h" #include "bstim32.h" /******************************************************************************* * the typedefs ******************************************************************************/ /******************************************************************************* * the globals ******************************************************************************/ volatile uint32_t gSystick1msEvent = 0,gSystick1msCnt=0,gSystick1SCnt; uint8_t Txbuf[8] = {0}; /******************************************************************************* * the const ******************************************************************************/ /******************************************************************************* * the functions ******************************************************************************/ /** * @brief 掉电监控,用于执行掉电事件 * @param * @retval */ static void PowerDownMonitroing(void) { /* 确认SVD监测结果是否低于阈值 */ if (true == SVD_Result_Confirmed(SVD_BELOW_THRESHOLD, 1U)) { /* 防抖处理 */ #if 0 if (true == SVD_Result_Confirmed(SVD_BELOW_THRESHOLD, 2000U/*us*/)) { /* 电压下降到报警阈值,处理掉电事件 */ /* 用户程序1 */ /* ...... */ /* 注意:用户需确保在BOR复位之前执行完毕 */ /* 确认SVD监测结果是否高于阈值,如否则持续等待 */ while(false == SVD_Result_Confirmed(SVD_HIGHER_THRESHOLD, 20U/*us*/)); /* 由于电源有下降到报警阈值,软件复位后重新初始化 */ FL_RMU_SetSoftReset(RMU); } #endif } } void TimebaseHandle(void) { gSystick1msEvent++; } void appTaskInit(void) { BSTIM32_Init(); gSystick1SCnt = 0; } void appTask(void) { if(gSystick1msEvent > 0u) { gSystick1msEvent--; gSystick1msCnt++; if (gSystick1msCnt % 2 == 0) { } if (gSystick1msCnt % 1000 == 0) { /* 电源掉电监测处理 */ PowerDownMonitroing(); gSystick1SCnt++; Txbuf[0] = gSystick1SCnt; SetSlaveData(Txbuf); LED1_TOG(); } if (gSystick1msCnt % 100 == 0) { LED0_TOG(); /* 清狗 */ IWDT_Clr(); #if (SLEEP_SUPPORT == 1) if (lin_is_sleep()) { //sleep(); } #endif } if (gSystick1msCnt >= 1000000) { gSystick1msCnt = 0; } } }