From b39d4533b3040949df437d6a14a674ca16d0aae6 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期三, 17 十一月 2021 17:33:45 +0800
Subject: [PATCH] V2.44 基站输出所有数据
---
源码/核心板/Src/main.c | 175 ++++++++++++++++++++++++++++------------------------------
1 files changed, 85 insertions(+), 90 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 18ba671..d9e3ec8 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,16 +18,18 @@
RCC_Configuration();
//SystemInit();
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x5000);
- Nvic_Init();
+
// Systick_Init();
TIM3_Int_Init();
- Led_Init();
+
Beep_Init();
DW_GPIO_Init();
Uart1_Init();
+ Uart2_Init();
Spi_Init();
ADC_Configuration();
-
+ Led_Init();
+ Nvic_Init();
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
}
u8 anchor_type;
@@ -58,19 +60,20 @@
{
g_com_map[COM_INTERVAL]=1000;
}
- if(module_power>67)
- {module_power=67;}
+ if(module_power>MAX_RFPOWER)
+ {module_power=MAX_RFPOWER;}
if(module_power<0)
{module_power=0;}
- if(g_com_map[MAX_REPORT_ANC_NUM]>10)
- {g_com_map[MAX_REPORT_ANC_NUM]=10;}
- if(g_com_map[MAX_REPORT_ANC_NUM]<1)
- {g_com_map[MAX_REPORT_ANC_NUM]=1;}
+// if(g_com_map[MAX_REPORT_ANC_NUM]>10)
+// {g_com_map[MAX_REPORT_ANC_NUM]=10;}
+// if(g_com_map[MAX_REPORT_ANC_NUM]<1)
+// {g_com_map[MAX_REPORT_ANC_NUM]=1;}
if(g_com_map[IMU_THRES]>10)
{g_com_map[IMU_THRES]=10;}
if(g_com_map[IMU_THRES]<1)
{g_com_map[IMU_THRES]=1;}
}
+u16 decid;
void Program_Init(void)
{ float temp;
u16 temp2;
@@ -86,20 +89,25 @@
// g_com_map[MAX_REPORT_ANC_NUM]=3;
// g_com_map[NEARBASE_NUM]=1;
// g_com_map[NEARBASE_ID1]=2;
- g_com_map[ANC_FLAG]=1;
- save_com_map_to_flash();
+// g_com_map[ANC_FLAG]=1;
+// save_com_map_to_flash();
+ g_com_map[BASESYNCSEQ]=1;
+ g_com_map[SYNCBASEID]=1;
#endif
OUT485_ENABLE;
ComMapCheck();
- g_com_map[VERSION] = 0x0201;
+ g_com_map[VERSION] = 0x022c;
dev_id = g_com_map[DEV_ID];
slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]*SLOT_SCALE)+3;
max_slotpos=g_com_map[COM_INTERVAL]/slottime;
tyncpoll_time=(g_com_map[DEV_ID]%max_slotpos)*slottime;
module_power = g_com_map[POWER];
total_slotnum = 1000/g_com_map[COM_INTERVAL];
- anchor_type = dev_id%3;
-
+ decid = (g_com_map[DEV_ID]/0x1000)*1000+((g_com_map[DEV_ID]%0x1000)/0x100)*100+((g_com_map[DEV_ID]%0x100)/0x10)*10+((g_com_map[DEV_ID]%0x10));
+ anchor_type = decid%g_com_map[MAX_REPORT_ANC_NUM];
+
+
+
if(g_com_map[DEV_ROLE])
{
printf("标签ID: %d .\r\n",dev_id);
@@ -115,11 +123,13 @@
// printf("DEVICE PAIRID: %d .\r\n",g_com_map[PAIR_ID]);
// printf("DEVICE ALARM DISTANCE: 1.%d 2.%d 3.%d .\r\n",g_com_map[ALARM_DISTANCE1],g_com_map[ALARM_DISTANCE2],g_com_map[ALARM_DISTANCE3]);
-
+ memcpy(g_com_map2,g_com_map,COM_MAP_SIZE);
for(i=0;i<255;i++)
{
- g_Tagdist[i]=0xffff;
+ g_Tagdist[i]=0x1ffff;
+ IdleTask();
}
+
}
/*! ------------------------------------------------------------------------------------------------------------------
@@ -131,12 +141,35 @@
*
* @return none
*/
+extern float GetPressAndHeight(void);
+extern u16 synclost_count;
+extern float Height;
+int32_t intheight;
void HeatBeat(void)
-{
+{ u16 checksum;
+ // GetPressAndHeight();
+ // intheight = Height*100;//+g_com_map[MAX_REPORT_ANC_NUM];
+ if(synclost_count>5)
+ {
+ hbsend[6] = 0;
+ }else{
+ hbsend[6] = 1;
+ }
+ if(intheight!=0)
+ intheight+=(int16_t)g_com_map[MAX_REPORT_ANC_NUM];
+ memcpy(&hbsend[7],&intheight,4);
+checksum = Checksum_u16(&hbsend[2],12);
+memcpy(&hbsend[14],&checksum,2);
UART_PushFrame(hbsend,16);
}
+u32 onesecondtimer;
+void OneSecondTask(void)
+{
+ TagListUpdate();
+ TagDistClear();
+}
extern u8 g_start_sync_flag,usart_send_flag,anc_report_num;
-u16 heartbeat_timer,poll_timer;
+u16 heartbeat_timer=58,poll_timer;
int16_t sync_timer;
extern u8 flag_newsecond, tagpos_rec[50], tagpos_send[50],ancidlist_num;
uint32_t tagpos_binary;
@@ -145,86 +178,55 @@
void IdleTask(void)
{
- UART_CheckReceive();
- UART_CheckSend();
- if(heartbeat_timer>1000)
+ UART_CheckReceive();
+// UART_CheckSend();
+ UART2_CheckReceive();
+
+// if( memcmp(g_com_map2,g_com_map,COM_MAP_SIZE)!=0)
+// {
+// SendAnchorState(SM_MAPERROR);
+// delay_ms(100);
+// SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
+// }
+ if(heartbeat_timer>60)
{
heartbeat_timer=0;
if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0)
HeatBeat();
}
- if(flag_newsecond)
+ if(time32_incr-onesecondtimer>=1000)
{
- flag_newsecond=0;
- tagpos_binary=0;
- memcpy(ancidlist_send,ancidlist_rec,ancidlist_num*2);
- ancidlist_num=0;
- for(u8 i=0;i<max_slotpos;i++)
- {
- if(tagpos_rec[i])
- tagpos_binary|=1<<i;
- tagpos_rec[i] = 0;
- }
+ onesecondtimer = time32_incr;
+ OneSecondTask();
}
- if(target_time>1000)
- {target_time-=1000;}
- #ifdef USART_INTEGRATE_OUTPUT
- if(g_com_map[DEV_ROLE]==0&&usart_send_flag)
- {u16 checksum;
- usart_send_flag=0;
- usart_send_anc[2] = 5;//正常模式
- usart_send_anc[3] = anc_report_num*6+2;//正常模式
- checksum = Checksum_u16(&usart_send_anc[2],anc_report_num*6+2);
- memcpy(&usart_send_anc[4+anc_report_num*6],&checksum,2);
- UART_PushFrame(usart_send_anc,6+anc_report_num*6);
- anc_report_num=0;
- }
- #endif
- if(g_com_map[CNT_UPDATE]==1)
- {
- uint32_t result = 0;
- u16 tmp = 0xAAAA;
- __disable_irq();
- result = FLASH_Prepare(0x8004A38, 2);
- if(result)
- result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2);
- __enable_irq();
- printf("进入升级模式\r\n");
- g_com_map[CNT_UPDATE]=0;
- save_com_map_to_flash();
- delay_ms(100);
- // STMFLASH_Write_NoCheck(0x8004A38,0xAAAA);
- // Delay_ms(100);
- SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
- }
- if(g_com_map[CNT_REBOOT]==1)
- {
- g_com_map[CNT_REBOOT]=0;
- g_com_map[MAP_SIGN_INDEX]=0;
- save_com_map_to_flash();
- delay_ms(100);
- SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
- }
- if(g_com_map[CNT_RESTART]==1)
- {
- g_com_map[CNT_RESTART]=0;
- save_com_map_to_flash();
- delay_ms(100);
- SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
- }
- if(g_com_map[MAP_SIGN_INDEX]!=0x55AA)
+// if(flag_newsecond)
+// {
+// flag_newsecond=0;
+// tagpos_binary=0;
+// memcpy(ancidlist_send,ancidlist_rec,ancidlist_num*2);
+// ancidlist_num=0;
+// for(u8 i=0;i<max_slotpos;i++)
+// {
+// if(tagpos_rec[i])
+// tagpos_binary|=1<<i;
+// tagpos_rec[i] = 0;
+// }
+// }
+ if(g_com_map[MAP_SIGN_INDEX]!=0x55AA)
{
SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
}
}
+extern u8 needanchorrx;
int main(void)
{
Device_Init();
Program_Init();
Dw1000_Init();
- delay_ms(10);
+ BarInit();
+ delay_ms(10);
Dw1000_App_Init();
/* Loop forever initiating ranging exchanges. */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
@@ -232,19 +234,12 @@
usart_send[1]=0xAA;
usart_send_anc[0]=0x55;
usart_send_anc[1]=0xAA;
+ dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
+ dwt_rxenable(0);//打开接收
//SendComMap(50, 0);
while(1)
{
- g_start_sync_flag=0;
- if(g_start_send_flag)
- {
- g_start_send_flag = 0;
- Tag_App();
- }
- IdleTask();
-if(g_com_map[DEV_ROLE]==0)
- Anchor_App();
-
+ IdleTask();
}
}
--
Gitblit v1.9.3