From 4979f7565cbd5f093e280f9f277ae29bb450acb8 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期六, 15 九月 2018 17:28:24 +0800 Subject: [PATCH] 增加低功耗标签 --- 源码/核心板/Src/main.c | 94 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 89 insertions(+), 5 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" index 366cc6f..b2dd27c 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" @@ -6,22 +6,40 @@ #include "beep.h" #include "dw_driver.h" #include "dw_app.h" +#include "filters.h" +#include "stm32f10x_it.h" +#include "serial_at_cmd_app.h" +#include "deca_device_api.h" //#define WORK_MODE_TAG #define WORK_MODE_ANCHOR +#define START_ALARM_DIST_CM 200 +#define BEEM_ON_TIME_MS 200 + +float dis_after_filter = 500; void Device_Init(void) { - Rcc_Init(); +// Rcc_Init(); + SystemInit(); Nvic_Init(); Systick_Init(); +#ifdef WORK_MODE_TAG + RTC_Configuration(); +#endif Led_Init(); Beep_Init(); DW_GPIO_Init(); - Usart_Init(); + Uart1_Init(); Spi_Init(); + GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); +} + +void Parameter_Init(void) +{ + Usart1ParseDataCallback = UsartParseDataHandler; } /*! ------------------------------------------------------------------------------------------------------------------ @@ -33,30 +51,96 @@ * * @return none */ +extern uint8_t send_start; int main(void) { + LPFilter_Frac* p_Dis_Filter; Device_Init(); + Parameter_Init(); Dw1000_Init(); + p_Dis_Filter = New_LP_Frac(0.7); + #ifdef WORK_MODE_TAG + dwt_configuresleep(0x940, 0x7); + _dwt_aonarrayupload(); + //dwt_entersleep(); + #endif + /* Loop forever initiating ranging exchanges. */ while(1) { #ifdef WORK_MODE_TAG + + if(send_start) + {send_start=0; Tag_App(); + } + RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); +PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI); #else Anchor_App(); + #endif + //除UWB之外的其他代码... - if(dist_cm<=100) + dis_after_filter = LP_Frac_Update(p_Dis_Filter, dist_cm); + + if(dis_after_filter <= g_alarm_dist) { - BEEP_ON; +// g_beep_off_time = (uint32_t)dis_after_filter * 10; +// if(g_beep_off_time <= 0) +// g_beep_off_time = 0; +// g_beep_on_time = BEEM_ON_TIME_MS; + switch(g_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 { - BEEP_OFF; +// g_beep_on_time = 0; +// g_beep_off_time = 0; + switch(g_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; + } } + + } } -- Gitblit v1.9.3