From 114944d512d07f1fdbfcaa13d582944e49b8961d Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 24 九月 2024 15:28:16 +0800 Subject: [PATCH] 1.31,修复不能测距的bug。 --- Src/stm32l0xx_it.c | 68 +++++++++++++++++++--------------- 1 files changed, 38 insertions(+), 30 deletions(-) diff --git a/Src/stm32l0xx_it.c b/Src/stm32l0xx_it.c index a2f73ae..96f8b50 100644 --- a/Src/stm32l0xx_it.c +++ b/Src/stm32l0xx_it.c @@ -43,6 +43,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 */ /* Private function prototypes -----------------------------------------------*/ @@ -56,15 +60,14 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ -extern DMA_HandleTypeDef hdma_adc; 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 DMA_HandleTypeDef hdma_usart5_rx; -extern DMA_HandleTypeDef hdma_usart5_tx; extern UART_HandleTypeDef hlpuart1; extern UART_HandleTypeDef huart1; -extern UART_HandleTypeDef huart5; +extern TIM_HandleTypeDef htim6; /* USER CODE BEGIN EV */ /* USER CODE END EV */ @@ -171,25 +174,12 @@ /* 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 */ -} - -/** - * @brief This function handles DMA1 channel 1 interrupt. - */ -void DMA1_Channel1_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */ - - /* USER CODE END DMA1_Channel1_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_adc); - /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */ - - /* USER CODE END DMA1_Channel1_IRQn 1 */ } /** @@ -215,8 +205,8 @@ /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 0 */ /* USER CODE END DMA1_Channel4_5_6_7_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart5_rx); - HAL_DMA_IRQHandler(&hdma_usart5_tx); + 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 */ @@ -237,17 +227,17 @@ } /** - * @brief This function handles USART4 and USART5 interrupt. + * @brief This function handles TIM6 global interrupt. */ -void USART4_5_IRQHandler(void) +void TIM6_IRQHandler(void) { - /* USER CODE BEGIN USART4_5_IRQn 0 */ -__HAL_UART_CLEAR_IDLEFLAG(&huart1); - /* USER CODE END USART4_5_IRQn 0 */ - HAL_UART_IRQHandler(&huart5); - /* USER CODE BEGIN USART4_5_IRQn 1 */ + /* USER CODE BEGIN TIM6_IRQn 0 */ - /* USER CODE END USART4_5_IRQn 1 */ + /* USER CODE END TIM6_IRQn 0 */ + HAL_TIM_IRQHandler(&htim6); + /* USER CODE BEGIN TIM6_IRQn 1 */ + + /* USER CODE END TIM6_IRQn 1 */ } /** @@ -270,7 +260,18 @@ 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 */ @@ -279,5 +280,12 @@ } /* 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 */ -- Gitblit v1.9.3