网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

RT-Thread操作系统打印函数概述

时间:2022-07-21 15:18

人气:

作者:admin

标签: RT-Thread  函数  操作系统 

导读:在设计之初我们希望通过调试程序完成我们需要的代码设计,这些都需要我们进行调试,进入degug模式,往往系统运行起来我们无法判断程序运行哪一步因此需要通过打印功能显示关键步...

在设计之初我们希望通过调试程序完成我们需要的代码设计,这些都需要我们进行调试,进入degug模式,往往系统运行起来我们无法判断程序运行哪一步因此需要通过打印功能显示关键步骤的程序运行节点,同样在rt-thread操作系统中依然可以进行此过程 的代码实现。下面就此进行讨论。

作为打印函数它提供了我们对应的函数接口,我们调用时其实与printf是相同的用法,但是看底层的函数描述我们就知道其实还是存在差异的。

首先粘贴出函数的实际项目中的用法:

rt_kprintf("the producer generates a number: %d\n", array[set%MAXSEM]);

运行起来我们看到相应的打印结果

pYYBAGLY-8OAIzh1AAAFpixkKu0340.png

相比于之前我们接触到的重定义函数,rt_kprintf定义为:void rt_kprintf(const char *fmt, ...)

下面我们看一下具体函数的描述(看注释):


void rt_kprintf(const char *fmt, ...)
{
    va_list args;
    rt_size_t length;
    static char rt_log_buf[RT_CONSOLEBUF_SIZE];

    va_start(args, fmt);
    /* the return value of vsnprintf is the number of bytes that would be
     * written to buffer had if the size of the buffer been sufficiently
     * large excluding the terminating null byte. If the output string
     * would be larger than the rt_log_buf, we have to adjust the output
     * length. */
    length = rt_vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args);  //计算长度
    if (length > RT_CONSOLEBUF_SIZE - 1)
        length = RT_CONSOLEBUF_SIZE - 1;
#ifdef RT_USING_DEVICE
    if (_console_device == RT_NULL)                        //判断控制台设备是否为空
    {
        rt_hw_console_output(rt_log_buf);
    }
    else
    {
        rt_uint16_t old_flag = _console_device->open_flag;

        _console_device->open_flag |= RT_DEVICE_FLAG_STREAM;
        rt_device_write(_console_device, 0, rt_log_buf, length);   //设备写线程
        _console_device->open_flag = old_flag;     //控制台设备状态
    }
#else
    rt_hw_console_output(rt_log_buf); 0           //控制台输出buf
#endif
    va_end(args);
}
RTM_EXPORT(rt_kprintf);

其中包含的几个线程大家可以自行观看官方文件库。

审核编辑:汤梓红
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信