- 一、导入stdio.h库文件
- /* Private includes ----------------------------------------------------------*/
- /* USER CODE BEGIN Includes */
- #include
- /* USER CODE END Includes */
- 二、重写函数
- /* USER CODE BEGIN 4 */
- #ifdef __GNUC__
- #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
- #define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)
- #else
- #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
- #define GETCHAR_PROTOTYPE int fgetc(FILE *f)
- #endif /* __GNUC__ */
- PUTCHAR_PROTOTYPE
- {
- HAL_UART_Transmit(&huart4, (uint8_t *)&ch, 1, 0xFFFF);
- return ch;
- }
- GETCHAR_PROTOTYPE
- {
- uint8_t ch = 0;
- HAL_UART_Receive(&huart4,(uint8_t *)&ch, 1, 0xFFFF);
- if (ch == 'r')
- {
- __io_putchar('r');
- ch = 'n';
- }
- return __io_putchar(ch);
- }
- /* USER CODE END 4 */
- 三、测试
- 然后就可以在程序中使用printf调试串口了。可以在main.c的主循环中加入下面一段代码验证printf是否已正确的重定向:
- uint8_t rd[10];
- scanf("%s",rd);
- printf("hello %srn",rd);
|