Retargeting getchar() function
Here my non blocking getchar. You need to clear the overflow otherwise the rx available will not rise again
bool getchar(uint8_t * ch) { // check for overflow and clear if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE)) __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE)) { *ch = huart1.Instance->RDR & 0x1FF; return true; } return false; }
And to make printf work in blocking mode:
void _write(int file, char *ptr, int len) { HAL_UART_Transmit(&huart1, (uint8_t*) ptr, len, 10); }