From 41776246aed24b42e1d05da230f6f114e02c87b6 Mon Sep 17 00:00:00 2001 From: guanjiao <sqrgj@163.com> Date: 星期日, 27 五月 2018 17:39:52 +0800 Subject: [PATCH] 增加低通滤波与渐进报警功能 --- 源码/核心板/Src/main.c | 18 ++ 源码/核心板/Src/algorithm/filters.c | 31 +++++ 源码/核心板/MDK-ARM/Project.uvprojx | 13 + 源码/核心板/Src/stm32f10x_it.c | 21 +++ 源码/核心板/MDK-ARM/Project.uvoptx | 183 +++++++++++++++++------------ 源码/核心板/Src/stm32f10x_it.h | 6 + 源码/核心板/Src/algorithm/filters.h | 19 +++ 源码/核心板/Src/application/dw_app.c | 39 ------ 8 files changed, 209 insertions(+), 121 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" index 326a025..e8abde3 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" @@ -101,8 +101,6 @@ <sRunDeb>0</sRunDeb> <sLrtime>0</sLrtime> <bEvRecOn>1</bEvRecOn> - <bSchkAxf>0</bSchkAxf> - <bTchkAxf>0</bTchkAxf> <nTsel>3</nTsel> <sDll></sDll> <sDllPa></sDllPa> @@ -159,6 +157,21 @@ <WinNumber>1</WinNumber> <ItemText>dist_cm</ItemText> </Ww> + <Ww> + <count>1</count> + <WinNumber>1</WinNumber> + <ItemText>g_beep_on_time,0x0A</ItemText> + </Ww> + <Ww> + <count>2</count> + <WinNumber>1</WinNumber> + <ItemText>g_beep_off_time,0x0A</ItemText> + </Ww> + <Ww> + <count>3</count> + <WinNumber>1</WinNumber> + <ItemText>dis_after_filter</ItemText> + </Ww> </WatchWindow1> <MemoryWindow1> <Mm> @@ -214,10 +227,6 @@ <pszMrule></pszMrule> <pSingCmds></pSingCmds> <pMultCmds></pMultCmds> - <pMisraNamep></pMisraNamep> - <pszMrulep></pszMrulep> - <pSingCmdsp></pSingCmdsp> - <pMultCmdsp></pMultCmdsp> <DebugDescription> <Enable>1</Enable> <EnableLog>0</EnableLog> @@ -249,7 +258,7 @@ <Group> <GroupName>User</GroupName> - <tvExp>0</tvExp> + <tvExp>1</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> @@ -280,7 +289,7 @@ </Group> <Group> - <GroupName>decadriver</GroupName> + <GroupName>algorithm</GroupName> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> @@ -292,14 +301,34 @@ <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <bDave2>0</bDave2> + <PathWithFileName>..\Src\algorithm\filters.c</PathWithFileName> + <FilenameWithoutPath>filters.c</FilenameWithoutPath> + <RteFlg>0</RteFlg> + <bShared>0</bShared> + </File> + </Group> + + <Group> + <GroupName>decadriver</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <RteFlg>0</RteFlg> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>5</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <bDave2>0</bDave2> <PathWithFileName>..\Src\decadriver\deca_device.c</PathWithFileName> <FilenameWithoutPath>deca_device.c</FilenameWithoutPath> <RteFlg>0</RteFlg> <bShared>0</bShared> </File> <File> - <GroupNumber>3</GroupNumber> - <FileNumber>5</FileNumber> + <GroupNumber>4</GroupNumber> + <FileNumber>6</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -310,8 +339,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>3</GroupNumber> - <FileNumber>6</FileNumber> + <GroupNumber>4</GroupNumber> + <FileNumber>7</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -330,8 +359,8 @@ <cbSel>0</cbSel> <RteFlg>0</RteFlg> <File> - <GroupNumber>4</GroupNumber> - <FileNumber>7</FileNumber> + <GroupNumber>5</GroupNumber> + <FileNumber>8</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -342,8 +371,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>4</GroupNumber> - <FileNumber>8</FileNumber> + <GroupNumber>5</GroupNumber> + <FileNumber>9</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -354,8 +383,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>4</GroupNumber> - <FileNumber>9</FileNumber> + <GroupNumber>5</GroupNumber> + <FileNumber>10</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -369,13 +398,13 @@ <Group> <GroupName>OnChipDevices</GroupName> - <tvExp>0</tvExp> + <tvExp>1</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> <File> - <GroupNumber>5</GroupNumber> - <FileNumber>10</FileNumber> + <GroupNumber>6</GroupNumber> + <FileNumber>11</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -386,8 +415,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>5</GroupNumber> - <FileNumber>11</FileNumber> + <GroupNumber>6</GroupNumber> + <FileNumber>12</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -398,8 +427,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>5</GroupNumber> - <FileNumber>12</FileNumber> + <GroupNumber>6</GroupNumber> + <FileNumber>13</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -418,8 +447,8 @@ <cbSel>0</cbSel> <RteFlg>0</RteFlg> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>13</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>14</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -430,8 +459,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>14</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>15</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -442,8 +471,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>15</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>16</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -454,8 +483,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>16</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>17</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -466,8 +495,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>17</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>18</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -478,8 +507,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>18</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>19</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -490,8 +519,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>19</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>20</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -502,8 +531,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>20</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>21</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -514,8 +543,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>21</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>22</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -526,8 +555,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>22</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>23</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -538,8 +567,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>23</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>24</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -550,8 +579,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>24</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>25</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -562,8 +591,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>25</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>26</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -574,8 +603,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>26</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>27</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -586,8 +615,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>27</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>28</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -598,8 +627,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>28</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>29</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -610,8 +639,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>29</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>30</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -622,8 +651,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>30</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>31</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -634,8 +663,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>31</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>32</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -646,8 +675,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>32</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>33</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -658,8 +687,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>33</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>34</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -670,8 +699,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>34</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>35</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -682,8 +711,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>6</GroupNumber> - <FileNumber>35</FileNumber> + <GroupNumber>7</GroupNumber> + <FileNumber>36</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -702,8 +731,8 @@ <cbSel>0</cbSel> <RteFlg>0</RteFlg> <File> - <GroupNumber>7</GroupNumber> - <FileNumber>36</FileNumber> + <GroupNumber>8</GroupNumber> + <FileNumber>37</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -714,8 +743,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>7</GroupNumber> - <FileNumber>37</FileNumber> + <GroupNumber>8</GroupNumber> + <FileNumber>38</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -726,8 +755,8 @@ <bShared>0</bShared> </File> <File> - <GroupNumber>7</GroupNumber> - <FileNumber>38</FileNumber> + <GroupNumber>8</GroupNumber> + <FileNumber>39</FileNumber> <FileType>2</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" index f4e9835..19b8feb 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" @@ -11,7 +11,6 @@ <ToolsetNumber>0x4</ToolsetNumber> <ToolsetName>ARM-ADS</ToolsetName> <pCCUsed>5060422::V5.06 update 4 (build 422)::ARMCC</pCCUsed> - <uAC6>0</uAC6> <TargetOption> <TargetCommonOption> <Device>STM32F103T8</Device> @@ -336,7 +335,7 @@ <MiscControls></MiscControls> <Define>USE_STDPERIPH_DRIVER,__CC_ARM</Define> <Undefine></Undefine> - <IncludePath>..\Src\Libraries\CMSIS\CM3\CoreSupport;..\Src\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;..\Src\Libraries\STM32F10x_StdPeriph_Driver\inc;..\Src\decadriver;..\Src\platform;..\Src;..\Src\OnChipDevices;..\Src\ExternalDevices;..\Src\application</IncludePath> + <IncludePath>..\Src\Libraries\CMSIS\CM3\CoreSupport;..\Src\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;..\Src\Libraries\STM32F10x_StdPeriph_Driver\inc;..\Src\decadriver;..\Src\platform;..\Src;..\Src\OnChipDevices;..\Src\ExternalDevices;..\Src\application;..\Src\algorithm</IncludePath> </VariousControls> </Cads> <Aads> @@ -403,6 +402,16 @@ </Files> </Group> <Group> + <GroupName>algorithm</GroupName> + <Files> + <File> + <FileName>filters.c</FileName> + <FileType>1</FileType> + <FilePath>..\Src\algorithm\filters.c</FilePath> + </File> + </Files> + </Group> + <Group> <GroupName>decadriver</GroupName> <Files> <File> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/filters.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/filters.c" new file mode 100644 index 0000000..a7feb7a --- /dev/null +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/filters.c" @@ -0,0 +1,31 @@ + +#include "filters.h" +#include <stdlib.h> + +LPFilter_Frac* New_LP_Frac(float pre_factor) +{ + LPFilter_Frac* self; + self = (LPFilter_Frac*)malloc(sizeof(LPFilter_Frac)); + if(self != NULL) + { + self->pre_data = 0; + if(pre_factor > 0 && pre_factor < 1) + self->pre_factor = pre_factor; + else + free(self); + return self; + } + else + { + free(self); + return NULL; + } +} + +float LP_Frac_Update(LPFilter_Frac* self, float new_data) +{ + float output_data = 0; + output_data = self->pre_factor * self->pre_data + (1 - self->pre_factor) * new_data; //update new data + self->pre_data = output_data; //save data this time as the previous data for next time + return output_data; +} diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/filters.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/filters.h" new file mode 100644 index 0000000..5ac381f --- /dev/null +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/filters.h" @@ -0,0 +1,19 @@ + +#ifndef __FILTERS_H__ +#define __FILTERS_H__ + +#include "stm32f10x.h" + +typedef struct +{ + float pre_data; + float pre_factor; + +}LPFilter_Frac; + +LPFilter_Frac* New_LP_Frac(float pre_factor); +float LP_Frac_Update(LPFilter_Frac* self, float new_data); + + +#endif + diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" index db01397..822a810 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" @@ -292,26 +292,6 @@ dwt_writetxdata(sizeof(tx_final_msg), tx_final_msg, 0);//将发送数据写入DW1000 dwt_writetxfctrl(sizeof(tx_final_msg), 0);//设定发送数据长度 dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送 - - //这里为串口输出 -// if (GPIO_ReadInputDataBit(GPIOA, SW2) != RESET) //通过拨码开关判断数据输出格式 -// { -// dID = TAG_ID; -// printf("TAG_ID: %2.0f ", dID); -// dID = ANCHOR_ID; -// printf("ANCHOR_ID: %2.0f ", dID); -// printf("Distance: %5.0f cm\n", (double)dist[TAG_ID]); -// } -// else -// { -// send[2] = ANCHOR_ID; -// send[3] = TAG_ID; - -// memcpy(&send[4], &dist[TAG_ID], 2); -// check = Checksum_u16(&send[2], 6); -// memcpy(&send[8], &check, 2); -// USART_puts(send, 10); -// } /* Poll DW1000 until TX frame sent event set. See NOTE 8 below. */ while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成 @@ -451,25 +431,6 @@ // dist[TAG_ID] = LP(dis, TAG_ID); //LP 为低通滤波器,让数据更稳定 LED0_BLINK; //每成功一次通讯则闪烁一次 - //这里供串口输出 -// if (GPIO_ReadInputDataBit(GPIOA, SW2) != RESET) //通过拨码开关判断数据输出格式 -// { -// dID = TAG_ID; -// printf("TAG_ID: %2.0f ", dID); -// dID = ANCHOR_ID; -// printf("ANCHOR_ID: %2.0f ", dID); -// printf("Distance: %5.0f cm\n", (double)dist[TAG_ID]); -// } -// else -// { -// send[2] = ANCHOR_ID; -// send[3] = TAG_ID; - -// memcpy(&send[4], &dist[TAG_ID], 2); -// check = Checksum_u16(&send[2], 6); -// memcpy(&send[8], &check, 2); -// USART_puts(send, 10); -// } } } 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..1b51d04 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,9 +6,15 @@ #include "beep.h" #include "dw_driver.h" #include "dw_app.h" +#include "filters.h" +#include "stm32f10x_it.h" //#define WORK_MODE_TAG #define WORK_MODE_ANCHOR +#define START_ALARM_DIST_CM 500 +#define BEEM_ON_TIME_MS 200 + +float dis_after_filter = 0; void Device_Init(void) { @@ -35,9 +41,11 @@ */ int main(void) { + LPFilter_Frac* p_Dis_Filter; Device_Init(); Dw1000_Init(); + p_Dis_Filter = New_LP_Frac(0.9); /* Loop forever initiating ranging exchanges. */ while(1) @@ -48,13 +56,17 @@ Anchor_App(); #endif //除UWB之外的其他代码... - if(dist_cm<=100) + dis_after_filter = LP_Frac_Update(p_Dis_Filter, dist_cm); + + if(dis_after_filter <= START_ALARM_DIST_CM) { - BEEP_ON; + g_beep_off_time = (uint32_t)dis_after_filter * 10 - 1000; + g_beep_on_time = BEEM_ON_TIME_MS; } else { - BEEP_OFF; + g_beep_on_time = 0; + g_beep_off_time = 0; } } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" index fbfd9f6..14ddeec 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" @@ -23,11 +23,32 @@ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x_it.h" #include "stm32f10x.h" +#include "beep.h" + /* Tick timer count. */ volatile uint32_t time32_incr; + +volatile uint32_t g_beep_on_time = 0; +volatile uint32_t g_beep_off_time = 0; + void SysTick_Handler(void) { + static uint32_t s_cycle_time = 0; time32_incr++; + + if(s_cycle_time >= g_beep_off_time) + { + s_cycle_time = 0; + } + else if(s_cycle_time > g_beep_on_time && s_cycle_time < g_beep_off_time) + { + BEEP_OFF; + } + else if(s_cycle_time <= g_beep_on_time) + { + BEEP_ON; + } + s_cycle_time++; } /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/ diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.h" index 03a10a3..6ab61dc 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.h" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.h" @@ -22,9 +22,15 @@ #ifndef __STM32F10x_IT_H #define __STM32F10x_IT_H +#include "stm32f10x.h" + #ifdef __cplusplus extern "C" { #endif + +extern volatile uint32_t g_beep_on_time; +extern volatile uint32_t g_beep_off_time; + /* * Tick timer interrupt handler to replace the default one. -- Gitblit v1.9.3