重映射
在初学C语言时,用的最多的怕是printf()
函数了,其作用就是将传入的参数打印到屏幕上,可以实现人机交互或方便用户对程序的调试等等。
在RT-Thread中,也有一个打印函数rt_kprintf()
,其作用和printf()
类似,可以在调试时输出各种信息。但是如果想要使用rt_kprintf()
函数,就必须将控制台重映射到rt_kprintf()
,这个控制台可以是串口、CAN、USB、以太网等输出设备,这里主要介绍一下将串口重定向到rt_kprintf()
。
rt_kprintf()函数定义
rt_kprintf()
函数是在kservice.c
文件中实现的,属于内核服务类函数,源代码如下:
/**
* 简介:这个函数是用来向控制台打印特定格式的字符串
* 参数:fmt指定的格式
*/
void rt_kprintf(const char *fmt, ...)
{
va_list args;
rt_size_t length;
/* 定义一个字符缓冲区,用于储存将要发生的字符串,默认大小为128 */
static char rt_log_buf[RT_CONSOLEBUF_SIZE];
va_start(args,