串口打印调试信息(干货)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lzw508170827/article/details/102759643

printf重定向到串口

上代码,这里用到的是hal库,标准库改以下函数就行。

#include <stdio.h>


int fputc(int ch, FILE *f)
{
	uint8_t temp[1] = {ch};
	HAL_UART_Transmit(&huart1, temp, 1, 5);  //huart1需要根据实际配置
	return ch;
}
int fgetc(FILE *f)
{
	uint8_t ch;
	HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 5);
	return ch;
}

因为上面这段代码我有经常使用到,所以可以把这段代码保存到keil里的模板里,需要用的时候双击即可,具体设置如下:
在这里插入图片描述
在这里插入图片描述
当需要这块代码就可以直接双击非常方便。

怎么优雅的打印串口信息

先上代码

#define USART_DEBUG

#ifdef USART_DEBUG
#define user_printf(format, ...) 		printf(format"\r\n", ##__VA_ARGS__)
#define user_info(format, ...) 			printf(__FILE__"\t[info]:"format"\r\n", ##__VA_ARGS__)
#define user_debug(format, ...)			printf(__FILE__"\t[debug]:"format"\r\n", ##__VA_ARGS__)
#define user_error(format, ...) 		printf(__FILE__"\t[error]:"format"\r\n", ##__VA_ARGS__)
#else
#define user_printf(format, ...) 		//空;这几条函数不起不起作用
#define user_info(format, ...) 			
#define user_debug(format, ...)			
#define user_error(format, ...) 		
#endif

这块代码的作用:
1、可以结尾自动补充换行符,打印出文件目录。
2、用到了条件编译,当作品完成上交时不希望串口打印调试信息,可以取消这个宏定义,这样这几条串口打印函数就无效了。
在这里插入图片描述

补充:可变参数宏
具体可以百度

#define user_printf(format, ...) 	printf(format"\r\n", ##__VA_ARGS__)

简单理解:__VA_ARGS__ 就是传递参数用的,当没有传递参数 ##就会带走前面的逗号,是语法完整。

个性化打印串口信息

获取符号链接。
http://www.patorjk.com/software/taag/
在这里插入图片描述
将每行符号复制下来
在这里插入图片描述
这里有报错的地方我们在前面添加一个反斜杠\
最后效果如下:
在这里插入图片描述

具体内容可以看这个哔哩哔哩:WUT电子科技协会

猜你喜欢

转载自blog.csdn.net/lzw508170827/article/details/102759643