在设计之初我们希望通过调试程序完成我们需要的代码设计,这些都需要我们进行调试,进入degug模式,往往系统运行起来我们无法判断程序运行哪一步因此需要通过打印功能显示关键步骤的程序运行节点,同样在rt-thread操作系统中依然可以进行此过程 的代码实现。下面就此进行讨论。
作为打印函数它提供了我们对应的函数接口,我们调用时其实与printf是相同的用法,但是看底层的函数描述我们就知道其实还是存在差异的。
首先粘贴出函数的实际项目中的用法:
rt_kprintf("the producer generates a number: %d\n", array[set%MAXSEM]);
运行起来我们看到相应的打印结果
相比于之前我们接触到的重定义函数,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文章
6825浏览量
123332 -
函数
+关注
关注
3文章
4331浏览量
62621 -
RT-Thread
+关注
关注
31文章
1289浏览量
40132
发布评论请先 登录
相关推荐
RT-Thread内部机制大揭秘,带你深入操作系统内核
一、RT-Thread概述RT-Thread是一款具有显著优势的开源嵌入式实时操作系统。它不仅具备轻量级、实时性强的特点,还拥有广泛的开源社区支持和丰富的应用场景。在轻量级方面,
基于RT-Thread操作系统衍生rt-smart实时操作系统简介
1、rt-smart 实时操作系统简介RT-Thread Smart(简称 rt-smart)嵌入式实时操作系统是基于
发表于 06-22 17:56
RT-Thread编程指南
RT-Thread编程指南——RT-Thread开发组(2015-03-31)。RT-Thread做为国内有较大影响力的开源实时操作系统,本文是RT
发表于 11-26 16:06
•0次下载
RT-Thread用户手册
RT-Thread用户手册——本书是RT-Thread的编程手册,用于指导在RT-Thread实时操作系统环境下如何进行编
程。
发表于 11-26 16:16
•0次下载
RT Thread操作系统教程及资料
## RT-Thread 简介 ##
RT-Thread RTOS是一款来自中国的开源实时操作系统,
由国内一些专业开发人员开发、维护。
它不仅仅是一款高效、稳定的实时核心,也是一套
发表于 05-11 14:54
•2次下载
RT-Thread Smart微内核操作系统发布!
9月1日,由上海睿赛德电子科技有限公司举办的RT-Thread Smart微内核操作系统发布会于北京圆满落幕,发布会以见微为主题,邀请到中国工程院院士、产业专家、高校教授及行业从业人员100余位莅临
国民威廉希尔官方网站 携手RT-Thread共同推进MCU与RT-Thread操作系统广泛适配
日前,国民威廉希尔官方网站
股份有限公司与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,正式成为RT-Thread高级会员。国民威廉希尔官方网站
将基于通用MCU和RT-Thread物联
RT-Thread实时操作系统安装向导
RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的威廉希尔官方网站
平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩
发表于 04-02 09:43
•7次下载
2022 RT-Thread全球威廉希尔官方网站 大会:实时嵌入式操作系统概述
RT-Thread全球威廉希尔官方网站
大会:嵌入式实时操作系统的昨天、今天和明天 主要从四个方面进行介绍,首先对实时嵌入式系统进行概述。
RT-Thread操作系统已经成功部署至芯驰E3
近日,国内领先的车规芯片企业芯驰科技与国内领先的车载RTOS(实时操作系统)企业睿赛德科技(RT-Thread)共同宣布:RT-Thread操作系统全面支持芯驰科技E3系列 MCU芯片
RT-Thread操作系统的FreeRTOS兼容层
的兼容项目中。 1 概述 这是一个针对RT-Thread国产操作系统的FreeRTOS操作系统兼容层,可以让原有基于FreeRTOS操作系统
RT-Thread荣获“最具影响力IoT操作系统奖”
2024年3月30日,第十一届开源操作系统年度威廉希尔官方网站
会议(OS2ATC)在西郊宾馆举办!RT-Thread作为国内领先的开源操作系统斩获了“最具影响力IoT操作系统奖”。该奖项是对
新书发布——《实时操作系统应用威廉希尔官方网站 :RT-Thread与ARM编程实践》
RT-Thread又一本新书《实时操作系统应用威廉希尔官方网站
——基于RT-Thread与ARM的编程实践》发布,标志着RT-Thread生态和实时操作系统
RT-Thread操作系统应用开发寒假师资培训
随着物联网和智能系统的快速发展,嵌入式成为当前最热门最有发展前途的IT应用领域之一。为进一步提升全国大学生在嵌入式芯片及系统设计领域的创新能力,特别是针对物联网应用开发中RT-Thread操作
评论