From fd498f8f31ff9428fa4c042337ac2fba895d4794 Mon Sep 17 00:00:00 2001 From: yincheng.zhong <zhyinch@gmail.com> Date: 星期五, 01 十一月 2019 13:29:49 +0800 Subject: [PATCH] 实现10us精度基站与标签时间同步 --- 源码/核心板/Src/main.c | 31 +++++++++++-------------------- 1 files changed, 11 insertions(+), 20 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 3ed18c7..78ab7a3 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" @@ -18,7 +18,8 @@ //SystemInit(); NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x5000); Nvic_Init(); - Systick_Init(); +// Systick_Init(); + TIM3_Int_Init(); Led_Init(); Beep_Init(); DW_GPIO_Init(); @@ -42,6 +43,7 @@ checksum = Checksum_u16(&hbsend[2],12); memcpy(&hbsend[14],&checksum,2); } +u16 tyncpoll_time; void Program_Init(void) {uint16_t i; Usart1ParseDataCallback = UsartParseDataHandler; @@ -49,12 +51,17 @@ //deca_sleep(1000); HeartBeatInit(); dev_id = g_com_map[DEV_ID]; +// g_com_map[DEV_ROLE]=1; +// g_com_map[DEV_ID]=1; +// g_com_map[COM_INTERVAL]=10; if(g_com_map[DEV_ROLE]) { + tyncpoll_time=g_com_map[DEV_ID]*g_com_map[MAX_REPORT_ANC_NUM]*4/3; printf("标签ID: %d .\r\n",dev_id); printf("通讯间隔: %d ms.\r\n",g_com_map[COM_INTERVAL]); printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); }else{ + anchor_type = dev_id%g_com_map[MAX_REPORT_ANC_NUM]; printf("基站ID: %x .\r\n",dev_id); printf("基站类型: %c .\r\n",anchor_type+0x41); @@ -96,24 +103,7 @@ if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0) HeatBeat(); } - if(poll_timer>=g_com_map[COM_INTERVAL]-tag_delaytime) - { - poll_timer=0; - if(g_com_map[ANC_POLL]||g_com_map[DEV_ROLE]) - { - if(g_com_map[DEV_ROLE]==0) - {int8_t correction_time; - correction_time=tag_timer-g_com_map[DEV_ID]*3; - tag_delaytime=correction_time; - if(tag_delaytime>g_com_map[COM_INTERVAL]/2) - { - tag_delaytime=tag_delaytime-g_com_map[COM_INTERVAL]; - } - } - g_start_send_flag=1; - } - - } + if(g_com_map[CNT_UPDATE]==1) { uint32_t result = 0; @@ -135,13 +125,14 @@ Device_Init(); Program_Init(); - Dw1000_Init(); + //Dw1000_Init(); delay_ms(10); Dw1000_App_Init(); /* Loop forever initiating ranging exchanges. */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); usart_send[0]=0x55; usart_send[1]=0xAA; + UART_PushFrame(hbsend,16); while(1) { IdleTask(); -- Gitblit v1.9.3