Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @brief This function handles USART1 global interrupt.
- */
- void USART1_IRQHandler(void)
- {
- /* USER CODE BEGIN USART1_IRQn 0 */
- UART_IRQHandler(&huart1);
- /* USER CODE END USART1_IRQn 0 */
- HAL_UART_IRQHandler(&huart1);
- /* USER CODE BEGIN USART1_IRQn 1 */
- /* USER CODE END USART1_IRQn 1 */
- }
- /*----------------------------------------------------------------------------
- UART_IRQHandler
- Handles UART global interrupt request.
- *----------------------------------------------------------------------------*/
- void UART_IRQHandler(UART_HandleTypeDef* uartHandle)
- {
- uint8_t data;
- BaseType_t xHigherPriorityTaskWoken = pdFALSE;
- if (__HAL_UART_GET_IT(uartHandle, UART_IT_RXNE)) { // read interrupt
- __HAL_UART_CLEAR_IT(uartHandle, UART_IT_RXNE); // clear interrupt
- data = uartHandle->Instance->RDR & 0x0FF;
- xQueueSendToBackFromISR(uartInQueueHandle, &data, &xHigherPriorityTaskWoken);
- xTaskNotifyFromISR(uartTaskHandle, 1, eSetBits, NULL);
- }
- if (__HAL_UART_GET_IT(uartHandle, UART_IT_TXE)) {
- __HAL_UART_CLEAR_IT(uartHandle, UART_IT_TXE); // clear interrupt
- if (uxQueueMessagesWaitingFromISR(uartOutQueueHandle)) {
- xQueueReceiveFromISR(uartOutQueueHandle, &data, &xHigherPriorityTaskWoken);
- uartHandle->Instance->TDR = data;
- tx_restart = 0;
- }
- else {
- tx_restart = 1;
- __HAL_UART_DISABLE_IT(uartHandle, UART_IT_TXE); // disable TX interrupt if nothing to send
- }
- }
- }
Add Comment
Please, Sign In to add comment