From 701755a24d798dabe9f604d71303a398356678b2 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期三, 08 九月 2021 20:06:42 +0800
Subject: [PATCH] 1
---
源码/核心板/Src/main.c | 183 +++++++++++++++++++++++----------------------
1 files changed, 94 insertions(+), 89 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 22bc877..16a2b8c 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;
@@ -62,10 +64,10 @@
{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)
@@ -93,7 +95,7 @@
#endif
OUT485_ENABLE;
ComMapCheck();
- g_com_map[VERSION] = 0x0208;
+ g_com_map[VERSION] = 0x0219;
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;
@@ -119,11 +121,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;
+
}
+
}
/*! ------------------------------------------------------------------------------------------------------------------
@@ -135,15 +139,23 @@
*
* @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);
@@ -158,86 +170,77 @@
void IdleTask(void)
{
- UART_CheckReceive();
- UART_CheckSend();
- if(heartbeat_timer>1000)
- {
- heartbeat_timer=0;
- if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0)
- HeatBeat();
- }
- 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;
- }
- }
+ UART_CheckReceive();
+ UART_CheckSend();
+ UART2_CheckReceive();
+
+
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)
- {
- SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
- }
+// #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
+
}
+u32 secondtimer;
+void OneSecondTask(void)
+{
+ if(time32_incr-secondtimer>1000)
+ {
+ uint8_t i;
+ secondtimer = time32_incr;
+ for(i=0;i<MAX_REGTAGNUM;i++)
+ {
+ if(regtag_map.remain_time[i]>0)
+ {
+ regtag_map.remain_time[i]--;
+ }
+ }
+ if(pwtag.remain_time>0)
+ {pwtag.remain_time--;}
+ flag_newsecond=1;
+ // GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_SET);
+ synclost_count++;
+ TagListUpdate();
+
+
+ if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0&&(heartbeat_timer++>60))
+ {
+ heartbeat_timer = 0;
+ HeatBeat();
+ }
+ 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(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);
@@ -248,16 +251,18 @@
//SendComMap(50, 0);
while(1)
{
- g_start_sync_flag=0;
- if(g_start_send_flag)
- {
- g_start_send_flag = 0;
- Tag_App();
- }
+// g_start_sync_flag=0;
+// if(g_start_send_flag)
+// {
+// g_start_send_flag = 0;
+// Tag_App();
+// }
+// OneSecondTask();
IdleTask();
-if(g_com_map[DEV_ROLE]==0)
- Anchor_App();
-
+if(g_com_map[DEV_ROLE]==0&&needanchorrx==1)
+ {needanchorrx = 0;
+ Anchor_Start();
+ }
}
}
--
Gitblit v1.9.3