| | |
| | | /* 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 -----------------------------------------------*/ |
| | |
| | | /* 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; |
| | | /* USER CODE BEGIN EV */ |
| | | |
| | | /* USER CODE END EV */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * @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 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles DMA1 channel 2 and channel 3 interrupts. |
| | | */ |
| | | void DMA1_Channel2_3_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_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 */ |
| | |
| | | /* USER CODE BEGIN LPTIM1_IRQn 1 */ |
| | | |
| | | /* USER CODE END LPTIM1_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles USART4 and USART5 interrupt. |
| | | */ |
| | | void USART4_5_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 END USART4_5_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | |
| | | 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 */ |