From be9861e4fc5ac9984218975f3d5594f1db848224 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期六, 13 十月 2018 12:48:56 +0800 Subject: [PATCH] 增加分段报警功能 --- 源码/核心板/Src/application/beep_logic_app.c | 117 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 90 insertions(+), 27 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" index 945a7e9..e2cfbea 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" @@ -4,11 +4,21 @@ #include "global_param.h" #include "dw_app.h" +#define ONTIME1 1 // 100ms +#define OFFTIME1 0 // 100ms + +#define ONTIME2 1 // 100ms +#define OFFTIME2 1 // 100ms + +#define ONTIME3 1 // 500ms +#define OFFTIME3 5 // 500ms void main_logic(void) //主逻辑在这里执行 -{uint16_t i, min_dist; +{ + static uint8_t beep_state,timer_state,beep_timer,beep_ontime,beep_offtime; + uint16_t i, min_dist; //除UWB之外的其他代码... static uint16_t beep_judge_cnt = 0; - if(beep_judge_cnt++ >= 200) + if(beep_judge_cnt++ >= 100) { beep_judge_cnt = 0; min_dist=0xffff; @@ -20,34 +30,87 @@ } } - if(min_dist <= g_com_map[ALARM_DISTANCE]) + + if(min_dist <= g_com_map[ALARM_DISTANCE1]) { - switch(g_com_map[ALARM_DEV]) - { - case 0: - BEEP2_ON; - BEEP_OFF; - OUT2_OFF; - break; - case 1: - BEEP_ON; - BEEP2_OFF; - OUT2_OFF; - break; - case 2: - OUT2_ON; - BEEP_OFF; - BEEP2_OFF; - break; - default: - BEEP2_ON; - BEEP_ON; - OUT2_ON; - break; - } + beep_ontime = ONTIME1; + beep_offtime = OFFTIME1; + beep_state=1; + }else if (min_dist <= g_com_map[ALARM_DISTANCE2]) + { + beep_ontime = ONTIME2; + beep_offtime = OFFTIME2; + beep_state=1; + }else if (min_dist <= g_com_map[ALARM_DISTANCE3]) + { + beep_ontime = ONTIME3; + beep_offtime = OFFTIME3; + beep_state=1; + }else{ + beep_state=0; } - else + + if(beep_state==1) { + if(timer_state==1) + { + if(beep_timer++ < beep_ontime) + { + switch(g_com_map[ALARM_DEV]) + { + case 0: + BEEP2_ON; + BEEP_OFF; + OUT2_OFF; + break; + case 1: + BEEP_ON; + BEEP2_OFF; + OUT2_OFF; + break; + case 2: + OUT2_ON; + BEEP_OFF; + BEEP2_OFF; + break; + default: + BEEP2_ON; + BEEP_ON; + OUT2_ON; + break; + } + }else{ + timer_state=0; + beep_timer=0; + } + }else{ + if(beep_timer++ < beep_offtime) + { + switch(g_com_map[ALARM_DEV]) + { + case 0: + BEEP2_OFF; + break; + case 1: + BEEP_OFF; + break; + case 2: + OUT2_OFF; + break; + default: + BEEP2_OFF; + BEEP_OFF; + OUT2_OFF; + break; + } + }else{ + timer_state=1; + beep_timer=0; + } + + } + + } else { switch(g_com_map[ALARM_DEV]) { case 0: -- Gitblit v1.9.3