在設計之初我們希望通過調試程序完成我們需要的代碼設計,這些都需要我們進行調試,進入degug模式,往往系統運行起來我們無法判斷程序運行哪一步因此需要通過打印功能顯示關鍵步驟的程序運行節點,同樣在rt-thread操作系統中依然可以進行此過程 的代碼實現。下面就此進行討論。
作為打印函數它提供了我們對應的函數接口,我們調用時其實與printf是相同的用法,但是看底層的函數描述我們就知道其實還是存在差異的。
首先粘貼出函數的實際項目中的用法:
rt_kprintf("the producer generates a number: %d\n", array[set%MAXSEM]);
運行起來我們看到相應的打印結果
![pYYBAGLY-8OAIzh1AAAFpixkKu0340.png](https://file.elecfans.com/web2/M00/55/54/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文章
6905瀏覽量
123850 -
函數
+關注
關注
3文章
4350瀏覽量
63044 -
RT-Thread
+關注
關注
31文章
1308瀏覽量
40489
發布評論請先 登錄
相關推薦
RT-Thread內部機制大揭秘,帶你深入操作系統內核
一、RT-Thread概述RT-Thread是一款具有顯著優勢的開源嵌入式實時操作系統。它不僅具備輕量級、實時性強的特點,還擁有廣泛的開源社區支持和豐富的應用場景。在輕量級方面,
![<b class='flag-5'>RT-Thread</b>內部機制大揭秘,帶你深入<b class='flag-5'>操作系統</b>內核](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
基于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次下載
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操作系統獎”。該獎項是對
![<b class='flag-5'>RT-Thread</b>榮獲“最具影響力IoT<b class='flag-5'>操作系統</b>獎”](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
新書發布——《實時操作系統應用技術:RT-Thread與ARM編程實踐》
RT-Thread又一本新書《實時操作系統應用技術——基于RT-Thread與ARM的編程實踐》發布,標志著RT-Thread生態和實時操作系統
![新書發布——《實時<b class='flag-5'>操作系統</b>應用技術:<b class='flag-5'>RT-Thread</b>與ARM編程實踐》](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
RT-Thread操作系統應用開發寒假師資培訓
隨著物聯網和智能系統的快速發展,嵌入式成為當前最熱門最有發展前途的IT應用領域之一。為進一步提升全國大學生在嵌入式芯片及系統設計領域的創新能力,特別是針對物聯網應用開發中RT-Thread操作
![<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統</b>應用開發寒假師資培訓](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
評論