From b97fe0e1006e09399214e49b8acc0ce10f4ffd0d Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期五, 13 九月 2024 09:44:19 +0800 Subject: [PATCH] 1.28,修复标签心跳包发送网关收不到的bug。兼容焊没焊uwb的两种板子 --- Src/stm32l0xx_it.c | 106 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 91 insertions(+), 15 deletions(-) diff --git a/Src/stm32l0xx_it.c b/Src/stm32l0xx_it.c index fb8ecaf..96f8b50 100644 --- a/Src/stm32l0xx_it.c +++ b/Src/stm32l0xx_it.c @@ -42,6 +42,10 @@ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ +float nomove_count=0; +volatile uint16_t rx_len ; //接收一帧数据的长度 +volatile uint8_t recv_end_flag; //一帧数据接收完成标志 +extern uint8_t GPS_GGAdate[200]; /* USER CODE END PV */ @@ -57,18 +61,22 @@ /* External variables --------------------------------------------------------*/ extern LPTIM_HandleTypeDef hlptim1; +extern DMA_HandleTypeDef hdma_lpuart1_rx; +extern DMA_HandleTypeDef hdma_lpuart1_tx; extern DMA_HandleTypeDef hdma_usart1_rx; extern DMA_HandleTypeDef hdma_usart1_tx; +extern UART_HandleTypeDef hlpuart1; extern UART_HandleTypeDef huart1; +extern TIM_HandleTypeDef htim6; /* USER CODE BEGIN EV */ /* USER CODE END EV */ /******************************************************************************/ -/* Cortex-M0+ Processor Interruption and Exception Handlers */ +/* Cortex-M0+ Processor Interruption and Exception Handlers */ /******************************************************************************/ /** - * @brief This function handles Non maskable interrupt. + * @brief This function handles Non maskable Interrupt. */ void NMI_Handler(void) { @@ -91,6 +99,7 @@ while (1) { /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader /* USER CODE END W1_HardFault_IRQn 0 */ } } @@ -148,21 +157,29 @@ void EXTI0_1_IRQHandler(void) { /* USER CODE BEGIN EXTI0_1_IRQn 0 */ - //GPIO_Toggle(MOTOR_GPIO_Port,MOTOR_Pin); + /* USER CODE END EXTI0_1_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); /* USER CODE BEGIN EXTI0_1_IRQn 1 */ -// HAL_LPTIM_DeInit(&hlptim1); -////HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); -//HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); -// /*Clear all related wakeup flags*/ -// __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); -// /*Re-enable all used wakeup sources: Pin1(PA.0)*/ -// HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); -// /*Enter the Standby mode*/ -// HAL_PWR_EnterSTANDBYMode(); + /* USER CODE END EXTI0_1_IRQn 1 */ +} + +/** + * @brief This function handles EXTI line 4 to 15 interrupts. + */ +void EXTI4_15_IRQHandler(void) +{ + /* USER CODE BEGIN EXTI4_15_IRQn 0 */ + + /* USER CODE END EXTI4_15_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9); + HAL_GPIO_EXTI_IRQHandler(RADIO_DIO1_Pin); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + /* USER CODE BEGIN EXTI4_15_IRQn 1 */ + + /* USER CODE END EXTI4_15_IRQn 1 */ } /** @@ -181,18 +198,46 @@ } /** + * @brief This function handles DMA1 channel 4, channel 5, channel 6 and channel 7 interrupts. + */ +void DMA1_Channel4_5_6_7_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 0 */ + + /* USER CODE END DMA1_Channel4_5_6_7_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_lpuart1_rx); + HAL_DMA_IRQHandler(&hdma_lpuart1_tx); + /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 1 */ + + /* USER CODE END DMA1_Channel4_5_6_7_IRQn 1 */ +} + +/** * @brief This function handles LPTIM1 global interrupt / LPTIM1 wake-up interrupt through EXTI line 29. */ void LPTIM1_IRQHandler(void) { /* USER CODE BEGIN LPTIM1_IRQn 0 */ - /* USER CODE END LPTIM1_IRQn 0 */ HAL_LPTIM_IRQHandler(&hlptim1); /* USER CODE BEGIN LPTIM1_IRQn 1 */ /* USER CODE END LPTIM1_IRQn 1 */ +} + +/** + * @brief This function handles TIM6 global interrupt. + */ +void TIM6_IRQHandler(void) +{ + /* USER CODE BEGIN TIM6_IRQn 0 */ + + /* USER CODE END TIM6_IRQn 0 */ + HAL_TIM_IRQHandler(&htim6); + /* USER CODE BEGIN TIM6_IRQn 1 */ + + /* USER CODE END TIM6_IRQn 1 */ } /** @@ -209,7 +254,38 @@ /* USER CODE END USART1_IRQn 1 */ } -/* USER CODE BEGIN 1 */ +/** + * @brief This function handles LPUART1 global interrupt / LPUART1 wake-up interrupt through EXTI line 28. + */ +void LPUART1_IRQHandler(void) +{ + /* USER CODE BEGIN LPUART1_IRQn 0 */ + uint32_t tmp_flag = 0; + uint32_t temp; + tmp_flag =__HAL_UART_GET_FLAG(&hlpuart1,UART_FLAG_IDLE); //获取IDLE标志位 + if((tmp_flag != RESET))//idle标志被置位 + { + __HAL_UART_CLEAR_IDLEFLAG(&hlpuart1);//清除标志位 + HAL_UART_DMAStop(&hlpuart1); // 停止DMA传输,防止 + temp = __HAL_DMA_GET_COUNTER(&hdma_lpuart1_rx);// 获取DMA中未传输的数据个数 + rx_len = LPUART_SIZE - temp; //总计数减去未传输的数据个数,得到已经接收的数据个数 + recv_end_flag = 1; // 接受完成标志位置1 +// HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收 + } + /* USER CODE END LPUART1_IRQn 0 */ + HAL_UART_IRQHandler(&hlpuart1); + /* USER CODE BEGIN LPUART1_IRQn 1 */ + /* USER CODE END LPUART1_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ +extern u8 uwb_rx_remaintime_ms; +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + if(uwb_rx_remaintime_ms>0) + { + uwb_rx_remaintime_ms--; + } +} /* USER CODE END 1 */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -- Gitblit v1.9.3