From abd6a3fdf20a1d3e6629505386efe36006ef907d Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 26 三月 2024 10:30:43 +0800 Subject: [PATCH] V1.9,加入看门狗,注意看门狗初始化要放在lp串口初始化后面 --- Src/main.c | 88 ++++++++++++++++++++++++++------------------ 1 files changed, 52 insertions(+), 36 deletions(-) diff --git a/Src/main.c b/Src/main.c index 0b4e461..4121365 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 //硬件版本号和批次信息位置 @@ -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; @@ -243,6 +245,10 @@ { SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader } + if(memcmp(g_com_map2,g_com_map,200)!=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)|2; + g_com_map[VERSION] = (1<<8)|9; // g_com_map[DEV_ID]=1158; // #ifdef DEBUG_MODE // // g_com_map[GROUP_ID]=21; @@ -465,17 +472,14 @@ 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[400]; -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]); @@ -490,11 +494,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]; @@ -506,15 +510,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]; @@ -551,10 +555,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; @@ -571,6 +579,7 @@ Set4LEDColor_Off(); //关led总电源 chongqi_flag=1; + } } void OneSecondTask(void) { @@ -601,9 +610,12 @@ { if(recv_end_flag == 1) //接收完成标志 { + uint16_t i; recv_end_time=0; -GPS_ParseGGA(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; @@ -639,22 +651,22 @@ /* 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(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_DMA_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_ADC_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_LPTIM1_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_USART1_UART_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_SPI1_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_LPUART1_UART_Init();//看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_IWDG_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。 + MX_USART5_UART_Init(); //看门狗务必放到lp串口后面,否则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(); #ifdef _USE_BAR -BarInit(); +//BarInit(); #endif Dw1000_Init(); dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); @@ -692,16 +704,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)) // { @@ -1261,9 +1276,9 @@ } 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) @@ -1296,7 +1311,8 @@ gpsled=LEDOFF; uwbled=LEDOFF; Set4LEDColor_Off(); -//delay_ms(10); + } + HAL_IWDG_Refresh(&hiwdg); } /* USER CODE END 4 */ -- Gitblit v1.9.3