

void UART_Interrupt_Processing(UART_HandleTypeDef *huart);

void USART3_IRQHandler(void)
{
/* USER CODE BEGIN USART3_IRQn 0 */
/* USER CODE END USART3_IRQn 0 */
HAL_UART_IRQHandler(&huart3);
/* USER CODE BEGIN USART3_IRQn 1 */
UART_Interrupt_Processing(&huart3);
/* USER CODE END USART3_IRQn 1 */
}

#define TRUE 1
#define FALSE 0

#include "stdbool.h"
#include <stdio.h>

unsigned char Receive_Buffer[1];
bool RxFlag;
int _write(int file, unsigned char* p, int len)
{
HAL_StatusTypeDef status = HAL_UART_Transmit(&huart3, p, len, 100);
return (status==HAL_OK ? len : 0);
}

__HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);
__HAL_UART_ENABLE_IT(&huart3, UART_IT_TC);
printf("Example_6_2 Echo UART\r\n");
while (1)
{
if(RxFlag)
{
printf("rx=%d[%c]\r\n", Receive_Buffer[0], Receive_Buffer[0]);
RxFlag=FALSE;
}
}

void UART_Interrupt_Processing(UART_HandleTypeDef *huart)
{
if(huart->Instance==huart3.Instance)
{
if(HAL_UART_Receive_IT(&huart3, Receive_Buffer, 1)== HAL_OK)
{
RxFlag=TRUE;
}
}
}



