WXK
2023-08-29 7e5e286a011abedb6d5862c123474c5eb97d27eb
Core/Src/main.c
@@ -177,18 +177,14 @@
  {
    Error_Handler();
  }
//     printf("设备ID: %x .\r\n",dev_id);
//    printf("固件版本:定位标签-串口输出-随机时间片模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
//g_com_map[NOMOVESLEEP_TIME]=5;
//   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]);
//   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]);
   if(g_com_map[CNT_UPDATE]==1)
   {
          Set4LEDColor(RED,RED,RED,RED);
  HAL_Delay(500);
  Set4LEDColor(GREEN,GREEN,GREEN,GREEN);
  HAL_Delay(500);
  Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
  HAL_Delay(500);
   uint32_t result = 0;
      uint16_t tmp = 0xAAAA;
   __disable_irq();
@@ -196,13 +192,14 @@
   if(result)
      result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); 
   __enable_irq();
      printf("进入升级模式\r\n");
//      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
//      //   STMFLASH_Write_NoCheck(0x8004A38,0xAAAA);
//      //   Delay_ms(100);
//         SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
     NVIC_SystemReset();
   }
         if(g_com_map[CNT_REBOOT]==1)
      {
@@ -226,9 +223,9 @@
}
void Uwb_Poll(void)
{
  if(nomove_flag==0)
  if(nomove_flag==0)//静止判断
    {
    if(lp_time-uwb_timer>=UWB_WORK_TIME_S)
    if(lp_time-uwb_timer>=UWB_WORK_TIME_S) //是否到uwb工作时间了。
    {
    uwbled=BLUE;
    powerled=LEDOFF;
@@ -242,7 +239,7 @@
        {
          uwb_work_num=0;
        }
        if(uwb_work_num>5&&youxiao_ceju<3)
        if(uwb_work_num>5&&youxiao_ceju<3)//判断uwb测距有效基站数量是否大于3个,并且超过5次的话GPS开始工作。
        {GPS_ON_flag=1;}
        else
        {GPS_ON_flag=0;}
@@ -338,12 +335,12 @@
  Set4LEDColor_Off();  //关一下led总电源
  Power_GPS_LoraOff();//关一下GPS总电源
//  Lora_Sleep();
  Set4LEDColor(RED,RED,RED,RED);
  HAL_Delay(500);
  Set4LEDColor(GREEN,GREEN,GREEN,GREEN);
  HAL_Delay(500);
  Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
  HAL_Delay(500);
//  Set4LEDColor(RED,RED,RED,RED);
//  HAL_Delay(500);
//  Set4LEDColor(GREEN,GREEN,GREEN,GREEN);
//  HAL_Delay(500);
//  NVIC_SystemReset();
  /* USER CODE END 2 */
  /* Infinite loop */
@@ -351,10 +348,10 @@
  while (1)
  {
    APL_Poll();
    APL_Poll();//lora接收,gps接收时间判断,单片机休眠函数,蜂鸣器判断函数。
    Uwb_Poll();
    Battery_Poll();
    Time_to_restart_Poll();
    Battery_Poll();//检测电量函数,每60s测一次电量。
    Time_to_restart_Poll();//防止出现意外情况,或则不考虑翻转问提,20000000s重启一次设备。
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
@@ -811,14 +808,14 @@
void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
{
lp_time++;
    nomove_time++;
    nomove_time++;//设备没有移动的时间
    if(nomove_time>g_com_map[NOMOVESLEEP_TIME])
    {nomove_flag=1;}
    else
    {nomove_flag=0;}
    if(lora_sendfinal_rx_bag_flag==1)
    if(lora_sendfinal_rx_bag_flag==1)//如果进入lora等待接收回复的状态
    {
    lora_sendfinal_rx_time=lora_sendfinal_rx_time+1;
    lora_sendfinal_rx_time=lora_sendfinal_rx_time+1;//lora等待接收2s,2s不休眠,如果超过两秒,标志位清零,进入修眠、
        if(lora_sendfinal_rx_time>=2)
        {
        lora_sendfinal_rx_time=0;