From 83543cdc379fce99175e3b15936c97a49fe73bfa Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期一, 04 三月 2024 16:02:54 +0800 Subject: [PATCH] Merge branch '免布线标签-lora-泰斗GPS' of http://47.108.70.204:60062/r/XRange_Tag into 免布线标签-lora-泰斗GPS --- Src/main.c | 161 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 135 insertions(+), 26 deletions(-) diff --git a/Src/main.c b/Src/main.c index a70a3c9..2bf19a4 100644 --- a/Src/main.c +++ b/Src/main.c @@ -38,11 +38,12 @@ #include <stdlib.h> #include <Lora.h> #include "radio.h" +#include "dps310.h" #include "dw_mbx_tag.h" #define NSH1 0x0001 #define GP 0x0002 #define FLASH_HARDWARE_VERSION_MAP (uint32_t)0x08004F00 //硬件版本号和批次信息位置 -#define DEBUG_MODE +//#define DEBUG_MODE UART_WakeUpTypeDef Selection; /* USER CODE END Includes */ @@ -99,6 +100,7 @@ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +void LedTask(void); uint32_t dev_id; uint16_t heartbeat_timer,poll_timer,sync_timer; uint8_t aRxBuffer[1],group_id; @@ -246,17 +248,18 @@ hardware_pici = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+2); hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+4); //deca_sleep(1000); - g_com_map[VERSION] = (1<<8)|3; + g_com_map[VERSION] = (1<<8)|6; // g_com_map[DEV_ID]=1158; - g_com_map[GROUP_ID]=0; + g_com_map[GROUP_ID]=1; // g_com_map[COM_INTERVAL] = 1000; if(g_com_map[COM_INTERVAL]<1000) { g_com_map[COM_INTERVAL] = 1000; } + g_com_map[STATIONARY_TIME] = 10; active_flag = g_com_map[ACTIVE_INDEX]; module_power = g_com_map[POWER]; - g_com_map[IMU_ENABLE] = 0; +// g_com_map[IMU_ENABLE] = 0; imu_enable=g_com_map[IMU_ENABLE]; motor_enable=g_com_map[MOTOR_ENABLE]; @@ -449,6 +452,42 @@ flag_onesecond = 0; } } +uint8_t Lora_send_flag; +void Lora_Send_Poll(void) +{ + if(Lora_send_flag) + { + Lora_send_flag=0; + LedTask(); + LoraReportPoll(); + flag_onesecond = 1; + + LED_TB_OFF; + LED_TR_OFF; + LED2_TB_OFF; + LED2_TR_OFF; + } +#ifndef DEBUG_MODE + if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&imu_enable) + { + if(sleep_flag==0) + { + Radio.Standby(); + Radio.Sleep(); + sleep_flag = 1; + } + + } else { + if(sleep_flag) + { + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; + } + + } + +#endif +} + /* USER CODE END 0 */ /** @@ -464,7 +503,6 @@ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); /* USER CODE BEGIN Init */ @@ -480,14 +518,13 @@ /* Initialize all configured peripherals */ MX_GPIO_Init(); - MX_USART1_UART_Init(); MX_SPI1_Init(); MX_ADC_Init(); - -// MX_IWDG_Init(); +// MX_DMA_Init(); + MX_IWDG_Init(); MX_TIM2_Init(); - // MX_LPUART1_UART_Init(); + MX_LPUART1_UART_Init(); MX_LPTIM1_Init(); /* USER CODE BEGIN 2 */ LED2_TB_ON; @@ -504,10 +541,13 @@ Delay_Ms(10); usart_send[0]=0x55; usart_send[1]=0xaa; - bat_percent=Get_VDDVlotage(); + HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); //开GPS电源 LoraInit(); +#ifdef _USE_BAR + BarInit(); +#endif // Delay_Ms(1000); // HAL_UART_Transmit(&hlpuart1,Close_RMC,22,1000); // HAL_UART_Transmit(&hlpuart1,Close_GSA,22,1000); @@ -530,10 +570,10 @@ // HAL_IWDG_Refresh(&hiwdg); OneSecondTask(); IdleTask(); - + Lora_Send_Poll(); #ifndef DEBUG_MODE -if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); + if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) + HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); #endif } @@ -621,7 +661,7 @@ hadc.Init.OversamplingMode = DISABLE; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc.Init.Resolution = ADC_RESOLUTION_12B; - hadc.Init.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + hadc.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5; hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ContinuousConvMode = DISABLE; @@ -640,7 +680,7 @@ } /** Configure for the selected ADC regular channel to be converted. */ - sConfig.Channel = ADC_CHANNEL_VREFINT; + sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { @@ -1027,44 +1067,113 @@ /*Enter the Standby mode*/ HAL_PWR_EnterSTANDBYMode(); } + extern uint8_t tx_near_msg[80]; float key_keeptime; extern float freqlost_count,range_lost_time; extern uint8_t lora_yingda_flag; extern uint32_t wg_lost_count; -uint8_t lora_yingdatime; +uint8_t lora_yingdatime,gotosleep_flag,sleep_flag; extern uint8_t lora_chongfuyingda_flag,report_ancnum; uint16_t no_data_chongqi_num; uint16_t anchor_send_num; -uint8_t no_yingdatime; +uint8_t no_yingdatime,tflag1,tflag2; +extern uint16_t tagdist_list[ANC_MAX_NUM]; void LedTask(void) { if(report_ancnum>0) { LED2_TB_ON; +#ifdef _SMT_TEST + tflag1 = 1; + printf("测距值%d\r\n",tagdist_list[0]); +#endif } - // if(wg_lost_count<=1) + if(wg_lost_count<=1) { +#ifdef _SMT_TEST + tflag2 = 1; + printf("网关通讯正常\r\n"); +#endif LED_TB_ON; } if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) if(bat_percent<15) { LED_TR_ON; + } else { + LED2_TB_ON; } - + } void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim) { // uint8_t pinlv; SystemClock_Config(); - LedTask(); - LoraReportPoll(); - flag_onesecond = 1; - LED_TB_OFF; - LED_TR_OFF; - LED2_TB_OFF; - LED2_TR_OFF; + HAL_IWDG_Refresh(&hiwdg); + if(active_flag==0) //未激活状态 + { + if(!GET_USERKEY) + { + LED_TB_ON; + key_keeptime+=1; + if(key_keeptime>3) + { + u8 i=250,keystate=1; + while(i--) + { + if(i%10==0) + { + LED_TB_BLINK; + } + if(GET_USERKEY) + { + keystate = 0; + } + if(keystate==0&&!GET_USERKEY) + { + parameter_init(); + g_com_map[ACTIVE_INDEX] = 1; + save_com_map_to_flash(); + delay_ms(100); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } + delay_ms(10); + } + } + } else { + // LED_LG_OFF; + key_keeptime=0; + } + + } else { + if(!sleep_flag) + { + Lora_send_flag=1; + if(nomove_count++>g_com_map[STATIONARY_TIME]) + { + stationary_flag = 1; + } else { + stationary_flag = 0; + } + if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable) + { + gotosleep_flag=1; + } else { + gotosleep_flag=0; + } + } + } + if(!GET_USERKEY) //长按重启逻辑 + { + key_keeptime+=1; + if(key_keeptime>=KEY_KEEPRESET_TIME) + { + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; + } + } else { + key_keeptime=0; + } } /* USER CODE END 4 */ -- Gitblit v1.9.3