//////////////////////////////////////////////////////////////////////////// ///@copyright Copyright (c) 2018, 传控科技 All rights reserved. ///------------------------------------------------------------------------- /// @file bsp_drv.c /// @brief bsp @ driver config ///------------------------------------------------------------------------- /// @version 1.0 /// @author CC /// @date 20180331 /// @note cc_AS_stc02 ////////////////////////////////////////////////////////////////////////////// #include "task_bedalarm.h" #include "app_config.h" #include "../msp/uart/msp_uart1.h" S_TASK_Bed_ALARM _s_task_bed_alarm; //============================================= void L3_task_bed_alarm_init(void) { L1_task_init(&_s_task_bed_alarm.task); L3_task_s_go(_s_task_bed_alarm,D_task_init); } #define D_task_ALARM_JUDGE 0x50 #define D_task_ALARM_DELETE 0x51 void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s) { TTSS_Task_init(): L2_task_go(D_task_ALARM_JUDGE); //判定是否开启离床报警 // if(R.LeaveForbid_flag == LeaveForbid_OPEN) // { // R.weight.last = R.weight.kgx10_out * 10; //////应该在 按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。 // L2_task_go_Tdelay(D_task_WEIGHT_READ_AGAIN, D_Tdelay_100ms); // } //判定是否触发报警 TTSS_Task_step(D_task_ALARM_JUDGE): R.weight.differ = R.Weight_Ref - R.weight.kgx10_out * 10; //触发报警 //放在该task的第二步 if(R.weight.differ >= 100) { R.beep = beep_on; R.beep_startime = D_sys_now; L2_task_go_Tdelay(D_task_ALARM_DELETE, 0); } //未触发报警 L2_task_go_Tdelay(D_task_ALARM_JUDGE, 0); //判定是否解除报警 TTSS_Task_step(D_task_ALARM_DELETE): //手动解除 // if(R.ForbidDelate_flag == 1) // { // R.beep = beep_on; // R.beep_startime = 0; // R.LeaveForbid_flag = LeaveForbid_OFF; 应在按键按下时,操作beep还和置位R.LeaveForbid_flag = LeaveForbid_OFF // } //超时解除 //放在该task的第一步 if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(30000)) { R.beep = beep_off; R.beep_startime = 0; R.LeaveForbid_flag = LeaveForbid_OFF; } L2_task_go_Tdelay(D_task_ALARM_JUDGE, 0); TTSS_Task_end(); }