zhyinch
2022-04-26 95f736655c46ec4974e89c7f0ca6a542cdbf3532
源码/核心板/Src/main.c
@@ -143,7 +143,7 @@
        
   OUT485_ENABLE;
      
   g_com_map[VERSION] = (1<<8)|(72);
   g_com_map[VERSION] = (1<<8)|(73);
   FLASH_Read(FLASH_HARDWARE_FLAG, (uint8_t*)&g_com_map[HARDWAREFLAG_INDEX], 16);
   dist_threshold = (g_com_map[SPEEDFILTER_THRES]*10)/(1000/g_com_map[COM_INTERVAL]);
   g_commap_antdelay = g_com_map[ANT_LENGTH];
@@ -158,7 +158,7 @@
   total_slotnum = 1000/g_com_map[COM_INTERVAL];
         vel_factor=g_com_map[FILTER_COEFFICIENT];
      pos_factor=g_com_map[FILTER_COEFFICIENT];
ComMapCheck();
    ComMapCheck();
      if(module_power>67)
      {
         module_power=67;
@@ -195,12 +195,48 @@
 *
 * @return none
 */
u8 noerror_flag,juststart_flag=1,justsleftest_flag=1,uwbchip_flag,mcu_flag,rf_flag,voltage_flag;
uint16_t temp;
float dw_vbat;
void VoltageTest(void)
{
   temp=dwt_readtempvbat(1);
   dw_vbat=(float)((temp&0xff)-173)/173+3.3;
   if(dw_vbat<2.8||dw_vbat>3.6)
   {
      voltage_flag = 1;
   }else{
        voltage_flag = 0;
    }
}
void UWBChiptest(void)
{
    u32 temp23;
         temp23 =  dwt_read32bitreg(CHAN_CTRL_ID) ;
         if(temp23!=0x4A7A0022)
         {
            uwbchip_flag = 1;
            }else{
                uwbchip_flag = 0;
                }
}
u8 selftest[2];
void SlefTestState(void)
{
    justselftest_timer = 2;
    UWBChiptest();
    VoltageTest();
}
void RunSelfTest(void)
{
    SlefTestState();
}
void HeatBeat(void)
    u16 checksum;
    selftest[0]=1;
    selftest[1]=0;
//    SendSelfTest();
    memcpy(&hbsend[6],selftest,2);
   memcpy(&hbsend[14],uartrec_userdata,10);
   checksum = Checksum_u16(&hbsend[2],22);
@@ -225,19 +261,9 @@
    }
    uwbrec_userdatalen = 0;
}
uint16_t temp;
float dw_vbat;
void StartUpTest(void)
{
   temp=dwt_readtempvbat(1);
   dw_vbat=(float)((temp&0xff)-173)/173+3.3;
   if(dw_vbat<2.8)
   {
      SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader
   }
}
extern u8 g_start_sync_flag,usart_send_flag,anc_report_num;
u16 heartbeat_timer,poll_timer;
u16 heartbeat_timer=250,poll_timer;
int16_t sync_timer;
extern u8 flag_newsecond, tagpos_rec[50], tagpos_send[50],ancidlist_num;
uint32_t tagpos_binary;
@@ -248,9 +274,19 @@
      
         UART_CheckReceive();
      UART_CheckSend();
       if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]>1000)
      {
            mcu_flag = 1;
      }else{
            mcu_flag = 0;
        }
    noerror_flag = !(uwbchip_flag|mcu_flag|rf_flag|voltage_flag);
    selftest[0] = voltage_flag<<3|mcu_flag<<2|uwbchip_flag<<1|noerror_flag;
    selftest[1] = juststart_flag<<2|justsleftest_flag<<1|rf_flag;
//   if(g_com_map[HEARTBEAT])
//    {
        if(heartbeat_timer>=200)
        if(heartbeat_timer>=250)
        {
            heartbeat_timer=0;
            HeatBeat();
@@ -264,15 +300,11 @@
   if(flag_newsecond)
   {
      uint32_t temp23;
//         temp23 =  dwt_read32bitreg(CHAN_CTRL_ID) ;
//         if(temp23!=0x4A480022)
//         {
//            temp23 =  dwt_read32bitreg(CHAN_CTRL_ID) ;
//               if(temp23!=0x4A480022)
//               {
//                  NVIC_SystemReset();
//               }
//            }
        if(selftesttimer>=60)
        {
            selftesttimer = 0;
            RunSelfTest();
        }
     flag_newsecond=0;
      tagpos_binary=0;
      memcpy(ancidlist_send,ancidlist_rec,ancidlist_num*2);
@@ -328,10 +360,6 @@
         delay_ms(100);
            SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader   
      }
        if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
      {
            SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader
      }
   }
    
@@ -350,7 +378,7 @@
   usart_send[1]=0xAA;
   usart_send_anc[0]=0x55;
   usart_send_anc[1]=0xAA;
    RunSelfTest();
   while(1)
   {
   g_start_sync_flag=0;