1
WXK
2023-09-27 b473b9e6b3a511358d127d5c8d3b56e42ab41bfc
Src/main.c
@@ -30,6 +30,11 @@
#include "TrackingDiff.h"
#include "dw_app.h"
#include "Flash.h"
#include "user.h"
#include "sx126x-board.h"
#include "string.h"
#include "stdio.h"
#include "delay.h"
#define NSH1 0x0001
#define GP   0x0002
#define FLASH_HARDWARE_VERSION_MAP      (uint32_t)0x08004F00    //硬件版本号和批次信息位置
@@ -222,10 +227,10 @@
   hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+4);
   //deca_sleep(1000);
   g_com_map[VERSION] = (1<<8)|68;
    g_com_map[DEV_ID]=0x6777;
    #ifdef DEBUG_MODE
   // g_com_map[GROUP_ID]=21;
//          g_com_map[DEV_ID]=4;
          g_com_map[DEV_ID]=0x6777;
    //   g_com_map[COM_INTERVAL]=100;
    //   g_com_map[MAX_REPORT_ANC_NUM]=1;
    //   g_com_map[NOMOVESLEEP_TIME]=10;
@@ -339,6 +344,27 @@
    HAL_ADC_DeInit(&hadc);
    HAL_ADCEx_DisableVREFINT();
}
extern uint8_t TX_Buffer;
void Uwb_Lora_Switch(uint8_t uwb, uint8_t lora)
{
if(uwb)
HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET);
if(lora)
HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_RESET);
}
uint8_t tx_num;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == GPIO_PIN_11)
    {
        RadioIrqProcess();
    }
}
/* USER CODE END 0 */
/**
@@ -370,18 +396,20 @@
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_LPTIM1_Init();
    MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_SPI1_Init();
  MX_ADC_Init();
  MX_DMA_Init();
  MX_IWDG_Init();
  /* USER CODE BEGIN 2 */
    LED_LG_ON;
    Program_Init();
    //   LIS3DH_Data_Init();   
//    Uwb_Lora_Switch(1,0);
    Dw1000_Init();
    Dw1000_App_Init();
    Delay_Ms(10);
//    Uwb_Lora_Switch(0,0);
    //   HardWareTypeDiffConfig();
    dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
    dwt_entersleep();
@@ -391,6 +419,11 @@
     Error_Handler();
    }
    HAL_Delay(2000);
//    Uwb_Lora_Switch(0,1);
    Lora_Init();
//    RadioSleep();
    Delay_Ms(10);
//    Uwb_Lora_Switch(0,0);
//   mcu_sleep();
   //LED0_BLINK;      
//   SystemPower_Config();
@@ -409,15 +442,27 @@
      SystemClock_Config();
      g_start_send_flag = 0;   
      HAL_IWDG_Refresh(&hiwdg);
//      if(current_count>slot_startcount&&current_count<slot_startcount+interval_count)
//      {
//      HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_SET);
//      }else{
//      HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_RESET);
//      }
//      LED_TR_BLINK;s
//        Uwb_Lora_Switch(0,1);
//        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
        memcpy(&TX_Buffer+3,&tx_num,1);
//        HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_RESET);
//        delay_us(100);
//        HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_SET);
//        delay_us(600);
//            Lora_Init();
//        printf("TX fasong\r\n");
       Radio.Send( &TX_Buffer, 4);
//        delay_us(1000);
////        RadioSleep();
//        delay_us(1000);
        tx_num++;
//                delay_ms(10);
//        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
        delay_ms(9);
//                Lora_Init();
//        Uwb_Lora_Switch(1,0);
      if(bat_percent>15)
      {   LED_TB_ON;
         Tag_App();
@@ -427,13 +472,14 @@
         Tag_App();
         LED_TR_OFF;      
      }
//        Uwb_Lora_Switch(0,0);
      //LED0_BLINK;      
      IdleTask();   
      if(waitusart_timer>0)
      {
         waitusart_timer--;
      }       
   }else{
   }else{
   IdleTask();   
   }
    if(m_bEUARTTxEn==0&&waitusart_timer==0)
@@ -442,10 +488,12 @@
     {
        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04;
     }
    #ifndef DEBUG_MODE
    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
         if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
                    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
    #endif
//    #ifndef DEBUG_MODE
//    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
//                    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
//    #endif
    }
// HAL_Delay(100);
    //  Get_Battary();
@@ -753,13 +801,14 @@
  HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|PWR_CTL_Pin, GPIO_PIN_SET);
  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, LED1_G_Pin|LED1_R_Pin|LED2_R_Pin, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOB, LED1_G_Pin|LED1_R_Pin|LED2_R_Pin|RADIO_nRESET_Pin
                          |RADIO_NSS_Pin, GPIO_PIN_RESET);
  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, DW_WKUP_Pin|DW_CTRL_Pin|LED2_G_Pin, GPIO_PIN_RESET);
  /*Configure GPIO pin : PA0 */
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  /*Configure GPIO pins : PA0 RADIO_DIO1_Pin */
  GPIO_InitStruct.Pin = GPIO_PIN_0|RADIO_DIO1_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
@@ -797,8 +846,10 @@
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(INPUT_5V_GPIO_Port, &GPIO_InitStruct);
  /*Configure GPIO pins : LED1_G_Pin LED1_R_Pin LED2_R_Pin PWR_CTL_Pin */
  GPIO_InitStruct.Pin = LED1_G_Pin|LED1_R_Pin|LED2_R_Pin|PWR_CTL_Pin;
  /*Configure GPIO pins : LED1_G_Pin LED1_R_Pin LED2_R_Pin RADIO_nRESET_Pin
                           RADIO_NSS_Pin PWR_CTL_Pin */
  GPIO_InitStruct.Pin = LED1_G_Pin|LED1_R_Pin|LED2_R_Pin|RADIO_nRESET_Pin
                          |RADIO_NSS_Pin|PWR_CTL_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
@@ -811,6 +862,12 @@
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  /*Configure GPIO pin : RADIO_BUSY_Pin */
  GPIO_InitStruct.Pin = RADIO_BUSY_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(RADIO_BUSY_GPIO_Port, &GPIO_InitStruct);
  /*Configure GPIO pin : PWR_ON_Pin */
  GPIO_InitStruct.Pin = PWR_ON_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
@@ -820,6 +877,9 @@
  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI0_1_IRQn, 1, 0);
  HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 1, 0);
  HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
@@ -863,7 +923,7 @@
    if(freqlost_count>FREQ_LOST_TIME)
    {
        tag_frequency = NOTAG_FREQ;
        if(lost_jumpcount++>=4) //无测距情况下,每5秒发一次;
        if(lost_jumpcount++>=0) //无测距情况下,每5秒发一次;
        {
            lost_jumpcount = 0;
            g_start_send_flag=1;