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 | 70 +++++++++++++++++++---------------- 1 files changed, 38 insertions(+), 32 deletions(-) diff --git a/Src/main.c b/Src/main.c index aaa72a2..4121365 100644 --- a/Src/main.c +++ b/Src/main.c @@ -245,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; + } } @@ -302,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)|7; + g_com_map[VERSION] = (1<<8)|9; // g_com_map[DEV_ID]=1158; // #ifdef DEBUG_MODE // // g_com_map[GROUP_ID]=21; @@ -468,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]); @@ -493,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]; @@ -509,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]; @@ -609,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; @@ -647,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); @@ -700,10 +704,12 @@ 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(); -- Gitblit v1.9.3