0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-07-21 15:18 次阅读

在设计之初我们希望通过调试程序完成我们需要的代码设计,这些都需要我们进行调试,进入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);

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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6351

    浏览量

    122063
  • 函数
    +关注

    关注

    3

    文章

    4114

    浏览量

    61426
  • RT-Thread
    +关注

    关注

    31

    文章

    1176

    浏览量

    38993
收藏 人收藏

    评论

    相关推荐

    如何对RT-Thread内核有基本的了解?

    RT-Thread 的时钟管理以时钟节拍为基础,时钟节拍是 RT-Thread 操作系统中最小的时钟单位。
    的头像 发表于 07-19 10:12 6837次阅读
     如何对<b class='flag-5'>RT-Thread</b>内核有基本的了解?

    RT-Thread Studio操作系统

    stm32f407+rtthread 使用 ec20 ppp拨号开发环境一、工程创建二、模块添加三、参数配置四、测试开发环境IDE:RT-Thread Studio操作系统
    发表于 08-24 07:44

    基于RT-Thread操作系统衍生rt-smart实时操作系统简介

    1、rt-smart 实时操作系统简介RT-Thread Smart(简称 rt-smart)嵌入式实时操作系统是基于
    发表于 06-22 17:56

    RT-Thread操作系统有哪些优势?

    RT-thread是一个轻量级的操作系统,很小,但是也是一个操作系统。主要优势有这些: 跨芯片平台:支持所有主流微控制器,解决设备碎片化问题。 实时操作系统内核:完全自主开发,硬实时,
    发表于 06-28 08:16

    RT-Thread编程指南

    RT-Thread编程指南——RT-Thread开发组(2015-03-31)。RT-Thread做为国内有较大影响力的开源实时操作系统,本文是RT
    发表于 11-26 16:06 0次下载

    RT-Thread Smart微内核操作系统发布!

    9月1日,由上海睿赛德电子科技有限公司举办的RT-Thread Smart微内核操作系统发布会于北京圆满落幕,发布会以见微为主题,邀请到中国工程院院士、产业专家、高校教授及行业从业人员100余位莅临
    的头像 发表于 09-09 10:49 2459次阅读

    RT-Thread嵌入式实时操作系统详解

    最近在公司实习,在导师的指导下,在学习RT-Thread,之前接触过一点Freertos,也是实时操作系统。裸机系统main函数里面顺序执行的无限循环(while(1)),cpu按顺序
    发表于 11-04 09:06 21次下载
    <b class='flag-5'>RT-Thread</b>嵌入式实时<b class='flag-5'>操作系统</b>详解

    源码解读·RT-Thread操作系统从开机到关机(转)

    源码解读·RT-Thread操作系统从开机到关机本篇内容比较简单,但却很繁琐,篇幅也很长,毕竟是囊括了整个操作系统的生命周期。这篇文章的目的是作为后续设计多任务开发的铺垫,后续会单独再抽出一篇分析
    发表于 12-16 16:58 11次下载
    源码解读·<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系统</b>从开机到关机(转)

    RT-Thread实时操作系统安装向导

    RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩
    发表于 04-02 09:43 6次下载

    RT-Thread学习笔记 RT-Thread的架构概述

    的物联网操作系统RT-Thread 概述 RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线
    的头像 发表于 07-09 11:27 4063次阅读
    <b class='flag-5'>RT-Thread</b>学习笔记 <b class='flag-5'>RT-Thread</b>的架构<b class='flag-5'>概述</b>

    RT-Thread操作系统已经成功部署至芯驰E3

    近日,国内领先的车规芯片企业芯驰科技与国内领先的车载RTOS(实时操作系统)企业睿赛德科技(RT-Thread)共同宣布:RT-Thread操作系统全面支持芯驰科技E3系列 MCU芯片
    的头像 发表于 09-09 09:15 993次阅读

    RT-Thread操作系统的FreeRTOS兼容层

    的兼容项目中。 1 概述 这是一个针对RT-Thread国产操作系统的FreeRTOS操作系统兼容层,可以让原有基于FreeRTOS操作系统
    的头像 发表于 01-14 00:55 1273次阅读

    RT-Thread斩获“最具影响力IoT操作系统奖”

    2024年3月30日,第十一届开源操作系统年度技术会议(OS2ATC)在西郊宾馆举办!RT-Thread作为国内领先的开源操作系统斩获了“最具影响力IoT操作系统奖”。
    的头像 发表于 04-10 09:51 198次阅读

    RT-Thread荣获“最具影响力IoT操作系统奖”

    2024年3月30日,第十一届开源操作系统年度技术会议(OS2ATC)在西郊宾馆举办!RT-Thread作为国内领先的开源操作系统斩获了“最具影响力IoT操作系统奖”。该奖项是对
    的头像 发表于 04-12 08:37 180次阅读
    <b class='flag-5'>RT-Thread</b>荣获“最具影响力IoT<b class='flag-5'>操作系统</b>奖”

    新书发布——《实时操作系统应用技术:RT-Thread与ARM编程实践》

    RT-Thread又一本新书《实时操作系统应用技术——基于RT-Thread与ARM的编程实践》发布,标志着RT-Thread生态和实时操作系统
    的头像 发表于 05-11 08:35 219次阅读
    新书发布——《实时<b class='flag-5'>操作系统</b>应用技术:<b class='flag-5'>RT-Thread</b>与ARM编程实践》