From fad1b368e3d987d753d3424c0144f574c6e44d2c Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期四, 11 四月 2024 11:14:06 +0800 Subject: [PATCH] Merge branch '免布线URT-LORA-L071' of http://47.108.70.204:60062/r/XRange_Tag into 免布线URT-LORA-L071 --- Src/main.c | 168 ++++++++++++++++++++++++++------------------------------ 1 files changed, 78 insertions(+), 90 deletions(-) diff --git a/Src/main.c b/Src/main.c index 29e458e..a33f031 100644 --- a/Src/main.c +++ b/Src/main.c @@ -39,6 +39,7 @@ #include "syn6288.h" #include "dw_mbx_tag.h" #include "GPS.h" +#include "lora.h" #define NSH1 0x0001 #define GP 0x0002 #define FLASH_HARDWARE_VERSION_MAP (uint32_t)0x08004F00 //硬件版本号和批次信息位置 @@ -46,11 +47,11 @@ uint8_t chongqi_flag; uint32_t uwbled,gpsled,loraled,powerled; UART_WakeUpTypeDef Selection; -uint8_t Close_RMC[20]="$CCMSG,RMC,1,0,*04\r\n"; -uint8_t Close_GSA[20]="$CCMSG,GSA,1,0,*0D\r\n"; -uint8_t Close_GSV[20]="$CCMSG,GSV,1,0,*1A\r\n"; -uint8_t Close_GLL[20]="$CCMSG,GLL,1,0,*1F\r\n"; -uint8_t Close_TXT[20]="$CCMSG,TXT,1,0,*00\r\n"; +uint8_t Close_RMC[100]="$CCMSG,RMC,1,0,*04\r\n$CCMSG,GSA,1,0,*0D\r\n$CCMSG,GSV,1,0,*1A\r\n$CCMSG,GLL,1,0,*1F\r\n$CCMSG,TXT,1,0,*00\r\n"; +//uint8_t Close_GSA[20]="$CCMSG,GSA,1,0,*0D\r\n"; +//uint8_t Close_GSV[20]="$CCMSG,GSV,1,0,*1A\r\n"; +//uint8_t Close_GLL[20]="$CCMSG,GLL,1,0,*1F\r\n"; +//uint8_t Close_TXT[20]="$CCMSG,TXT,1,0,*00\r\n"; /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -107,6 +108,7 @@ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +extern uint8_t shengji_flag; uint32_t dev_id; uint16_t heartbeat_timer,poll_timer,sync_timer; uint8_t aRxBuffer[1],group_id; @@ -123,7 +125,7 @@ uint8_t anjian_flag; uint8_t stationary_flag; uint16_t stationary_num; -uint8_t recv_end_time; +uint16_t recv_end_time; u16 GetLPTime(void) { u16 count=HAL_LPTIM_ReadCounter(&hlptim1); @@ -243,6 +245,10 @@ { SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader } + if(memcmp(g_com_map2,g_com_map,COM_MAP_SIZE)!=0) + { + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; + } } @@ -290,7 +296,8 @@ u8 active_flag,nomovesleeptime; void Program_Init(void) -{ float temp; +{ + float temp; uint16_t temp2; uint16_t i; Usart1ParseDataCallback = UsartParseDataHandler; @@ -299,7 +306,7 @@ 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)|1; + g_com_map[VERSION] = (1<<8)|15; // g_com_map[DEV_ID]=1158; // #ifdef DEBUG_MODE // // g_com_map[GROUP_ID]=21; @@ -308,7 +315,7 @@ // // g_com_map[MAX_REPORT_ANC_NUM]=1; // // g_com_map[NOMOVESLEEP_TIME]=10; // #endif - g_com_map[GROUP_ID]=1; + g_com_map[GROUP_ID]=0; // g_com_map[COM_INTERVAL] = 1000; if(g_com_map[COM_INTERVAL]<1000) {g_com_map[COM_INTERVAL] = 1000;} @@ -339,6 +346,10 @@ { g_com_map[COM_INTERVAL]=1000; } + if(g_com_map[LORA_POWER]>22) + { + g_com_map[LORA_POWER] = 22; + } if(module_power>67) {module_power=67;} if(module_power<0) @@ -453,7 +464,6 @@ extern uint8_t GPSchangdu; uint8_t no_yingdaflag; -extern uint8_t GPS_GGAdate[200]; uint8_t GPS_GGAdate111[200]="报警"; @@ -463,32 +473,17 @@ } void GPS_Close_Init() { - - Delay_Ms(100); - HAL_UART_Transmit(&hlpuart1,Close_RMC,20,1000); -// Delay_Ms(100); - HAL_UART_Transmit(&hlpuart1,Close_RMC,20,1000); -// Delay_Ms(100); - HAL_UART_Transmit(&hlpuart1,Close_GSA,20,1000); -// Delay_Ms(100); - HAL_UART_Transmit(&hlpuart1,Close_GSV,20,1000); -// Delay_Ms(100); - HAL_UART_Transmit(&hlpuart1,Close_GLL,20,1000); -// Delay_Ms(100); - HAL_UART_Transmit(&hlpuart1,Close_TXT,20,1000); - Delay_Ms(100); + HAL_UART_Transmit_DMA(&hlpuart1,Close_RMC,100); + Delay_Ms(150); } +#define GPS_SIZE 400 extern uint16_t Lora_rece_error; extern uint16_t Beepchixutime; -#define BleRxBufferSize 1 -uint8_t aRxBuffer[1],group_id,GPSRxBuffer[BleRxBufferSize]; -uint8_t ble_rx_success_flag; +uint8_t group_id; uint8_t fangzhijinrushuimian_flag; -uint8_t GPSchangdu; -uint8_t GPS_GGAdate[200]; -uint8_t GPS_GGAdatenum; -void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) -{ +uint8_t GPS_GGAdate[GPS_SIZE]; +//void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +//{ // { // GPS_RecvFsm(GPSRxBuffer[0]); // GPS_Recv_Poll(GPSRxBuffer[0]); @@ -503,11 +498,11 @@ // } // HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1); // } -} -uint8_t ble_rxdate111[3]={0x11,0x22,0x33}; -void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) -{ - SystemClock_Config(); +//} +//uint8_t ble_rxdate111[3]={0x11,0x22,0x33}; +//void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) +//{ +// SystemClock_Config(); // HAL_UART_Transmit(&hlpuart1,(uint8_t*)ble_rxdate111,3,1000); //// huart->RxState = HAL_UART_STATE_BUSY_RX; // ble_rxzhongzhuandate[ble_zhongzhuannum]=BleRxBuffer[0]; @@ -519,15 +514,15 @@ // memset(ble_rxzhongzhuandate,0,sizeof(ble_rxzhongzhuandate)); // } // if(lp_time>3) - if(HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE)) - { - Error_Handler(); - } - fangzhijinrushuimian_flag=1; +// if(HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE)) +// { +// Error_Handler(); +// } +// fangzhijinrushuimian_flag=1; // HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1); // HAL_UART_Transmit(&hlpuart1,ble_rxdate,2,1000); -} +//} extern uint8_t yuyin_no_sleep_flag; extern uint8_t yuyin_sendflag; extern uint8_t xiafayuyin_data[200]; @@ -538,17 +533,9 @@ if(yuyin_sendflag) { yuyin_sendflag=0; - // SYN_FrameInfo(0,yuyin_yinliang);//设置音量等级V10 SYN_FrameInfo(0,xiafayuyin_data); //播放内容 -// HAL_UART_Receive_IT(&huart6, &Get_Uart6_data, 1); memset(xiafayuyin_data,0,sizeof(xiafayuyin_data)); } -// if(Get_Uart6_data==0x4F) -// { -//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); -//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET); -// Get_Uart6_data=0; -// } } void PowerDownDetect(void) { @@ -572,10 +559,14 @@ } } } +uint8_t only_one_flag; uint8_t gotosleep_flag; uint8_t usart5_state,flag_onesecond; void Jingzhi_Poll(void) { + if(only_one_flag==0) + { + only_one_flag=1; powerled=LEDOFF; loraled=LEDOFF; gpsled=LEDOFF; @@ -592,6 +583,7 @@ Set4LEDColor_Off(); //关led总电源 chongqi_flag=1; + } } void OneSecondTask(void) { @@ -608,43 +600,31 @@ { if(Lora_send_flag) { -// memset(GPS_GGAdate,0,100); -// HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE); - -// GPS_Close_time++; -// if(GPS_Close_time>5&&GPS_Close_flag) -// { -// GPS_Close_flag=0; -// GPS_Close_Init(); -//HAL_UART_Receive_DMA(&hlpuart1, (uint8_t *)GPS_GGAdate, 1); -// } -// if(GPS_Close_flag==0) -// HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1); debugnum++; Lora_send_flag=0; -// LedTask(); loraled=BLUE; LoraReportPoll(); flag_onesecond = 1; } } -extern volatile uint8_t rx_len ; //接收一帧数据的长度 +extern volatile uint16_t rx_len ; //接收一帧数据的长度 extern volatile uint8_t recv_end_flag; //一帧数据接收完成标志 void Lpuart_rx_Poll(void) { if(recv_end_flag == 1) //接收完成标志 { + uint16_t i; recv_end_time=0; -GPS_ParseGGA(GPS_GGAdate, rx_len); -//HAL_UART_Transmit_DMA(&hlpuart1, GPS_GGAdate,rx_len); -memset(GPS_GGAdate,0,rx_len); + for(i=0;i<GPS_SIZE;i++) + {GPS_RecvFsm(GPS_GGAdate[i]);} +//GPS_ParseGGA(GPS_GGAdate, rx_len); +memset(GPS_GGAdate,0,GPS_SIZE); rx_len = 0;//清除计数 recv_end_flag = 0;//清除接收结束标志位 fangzhijinrushuimian_flag=0; -//HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收 } - +HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收 } /* USER CODE END 0 */ @@ -675,22 +655,23 @@ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_DMA_Init(); - MX_ADC_Init(); - MX_IWDG_Init(); - MX_LPTIM1_Init(); - MX_USART1_UART_Init(); - MX_SPI1_Init(); - MX_LPUART1_UART_Init(); - MX_USART5_UART_Init(); + MX_GPIO_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_DMA_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_ADC_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_LPTIM1_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_USART1_UART_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_SPI1_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_LPUART1_UART_Init();//看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 +// MX_IWDG_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 + MX_USART5_UART_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 /* USER CODE BEGIN 2 */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); //开GPS电源 delay_ms(10); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); //开uwb电源 Program_Init(); + MX_IWDG_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。 #ifdef _USE_BAR -BarInit(); +//BarInit(); #endif Dw1000_Init(); dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); @@ -702,7 +683,7 @@ Set4LEDColor_Off(); HAL_Delay(500); LoraInit(); - +// delay_ms(1000); bat_percent=Get_Battary(); GPS_Close_flag=0; GPS_Close_Init(); @@ -710,7 +691,7 @@ { Error_Handler(); } - HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收 +// HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收 __HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_IDLE); //使能IDLE中断 if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE)) { @@ -728,16 +709,19 @@ if(gotosleep_flag==1) { Jingzhi_Poll(); +// HAL_IWDG_Refresh(&hiwdg); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); } else { +// HAL_IWDG_Refresh(&hiwdg); Lpuart_rx_Poll(); OneSecondTask(); IdleTask(); PowerDownDetect(); Lora_Send_Poll(); TTSchaxun_Busy(); + LoraUp_Poll(); // #ifndef DEBUG_MODE // if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) // { @@ -1139,8 +1123,8 @@ /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_7|GPIO_PIN_8, GPIO_PIN_RESET); - - /*Configure GPIO pin Output Level */ + + /*Configure GPIO pin O__set_MSPutput Level */ HAL_GPIO_WritePin(GPIOC, RADIO_NSS_Pin|RADIO_nRESET_Pin|GPIO_PIN_4, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ @@ -1295,11 +1279,12 @@ yuyin_no_sleep_flag=0; } } +#define NOGPS_RESET_TIME 300 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim) { -// uint8_t pinlv; + if(chongqi_flag==0&&shengji_flag==0) + { SystemClock_Config(); - HAL_IWDG_Refresh(&hiwdg); Set4LEDColor(powerled,loraled,gpsled,uwbled); Bat_Percent_Poll(); if(state5v==0) @@ -1307,7 +1292,7 @@ if(yuyin_no_sleep_flag==0) { recv_end_time++; - if(recv_end_time>3) + if(recv_end_time>NOGPS_RESET_TIME) {HAL_NVIC_SystemReset();} } Yuying_Poll(); @@ -1315,8 +1300,10 @@ if(nomove_count++>g_com_map[STATIONARY_TIME]) { stationary_flag = 1; - } else { - stationary_flag = 0; + } + else + { + stationary_flag = 0; } if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable) { @@ -1330,7 +1317,8 @@ gpsled=LEDOFF; uwbled=LEDOFF; Set4LEDColor_Off(); -//delay_ms(10); + } + HAL_IWDG_Refresh(&hiwdg); } /* USER CODE END 4 */ -- Gitblit v1.9.3