前言
采用printf打印串口信息是最常用的调试手段,在STM32中如果需要采用printf进行打印需要对串口进行重定向,方法如下:
注:如果是新建的工程可采用CUBEMX生成初始化代码,这里讲的是通用方法。
一、添加stdio.h
需要在串口的实现C文件中添加stdio.h头文件:
#include "stdio.h"
二、使用步骤
再在串口的实现C文件中重写fputc:
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
//具体哪个串口可以更改huart1为其它串口
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1 , 0xffff);
return ch;
}
三、编译设置
打开魔术棒设置,在Target选择卡中勾选Use MicroLIB。
四、应用举例
在main 函数中添加以下代码
printf("hello world \n");
连接好串口(需要通过TTL-USB转换器连接到计算机),找一个串口调试助手,打开TTL-USB转换器模拟的那个串口(这里是COM10),确认波特率与MCU代码设置相同,运行MCU代码在串口调试助手即可看到“hello worl”。