0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于一種高效printf打印方式

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-02-29 16:29 ? 次閱讀

1寫在前面

SWO:Serial Wire Output,串行線輸出

RTT:Real Time Transfer,實(shí)時(shí)傳輸

前面SWO文章,實(shí)現(xiàn)原理是通過MCU的SWO引腳輸出信息(到顯示終端SWV)。

而本文講述的RTT不需要通過額外SWO引腳,即可實(shí)現(xiàn)printf輸出,而且性能(耗時(shí))遠(yuǎn)高于SWO。

2關(guān)于RTT

SEGGER實(shí)時(shí)傳輸(RTT)是一種在嵌入式應(yīng)用中實(shí)現(xiàn)交互式用戶I/O的技術(shù)。

它結(jié)合了SWO和半主機(jī)( semihosting)的優(yōu)點(diǎn),具有很高的性能。

使用RTT,可以從目標(biāo)微控制器輸出信息,并以非常高的速度向應(yīng)用程序發(fā)送輸入,而不會(huì)影響目標(biāo)的實(shí)時(shí)性。

Cortex - M0不支持SWO,而本文講述的RTT則支持Cortex - M0,文末提供STM32F0工程。

3關(guān)于J-Link RTT Viewer

J-Link RTT Viewer是在調(diào)試主機(jī)上使用RTT功能的Windows GUI應(yīng)用程序。

RTT Viewer可以獨(dú)立使用,打開自己與J-Link的連接,并與正在運(yùn)行的調(diào)試會(huì)話目標(biāo)或并行,連接到它并使用現(xiàn)有的J-Link連接。

RTT Viewer支持RTT的主要功能:

·通道0上的終端輸出

·將文本輸入發(fā)送到通道0

·最多16個(gè)虛擬終端,只有一個(gè)目標(biāo)通道

·控制文本輸出:彩色文本,擦除控制臺(tái)

·在通道1上記錄數(shù)據(jù)

·

·

本文主要結(jié)合J-Link RTT Viewer講述,當(dāng)然支持RTT的還有J-Link RTT Client 和J-Link RTT Logger。

更多相關(guān)介紹,可以參看:

https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer

(公號(hào)不支持外鏈接,請(qǐng)復(fù)制鏈接到瀏覽器打開)

4獲取RTT源碼

我們需要在工程中添加RTT源碼,同時(shí)需要J-Link RTT Viewer查看器支持。

J-Link / J-Trace下載地址(Windows版本):

https://www.segger.com/downloads/jlink/JLink_Windows.exe

安裝之后,在安裝目錄下包含RTT源碼:

C:Program Files (x86)SEGGERJLinkSamplesRTT

解壓SEGGER_RTT_V***.zip之后,復(fù)制整個(gè)RTT目錄源碼到你工程。

提示:

解壓之后,只需復(fù)制RTT目錄就行。

4.1 添加RTT到工程

添加源碼文件到工程主要有兩個(gè)步驟:1.添加源碼文件到工程。 2.添加文件路徑。

這里不講述具體添加過程,Keil 和 IAR之前有講述,請(qǐng)參看我的文章:

Keil新建基礎(chǔ)軟件工程

IAR新建基礎(chǔ)軟件工程

當(dāng)然,我下面有提供添加好的源碼工程。

4.2 應(yīng)用程序

調(diào)用RTT的打印,和常規(guī)的printf類似。

添加頭文件:#include "SEGGER_RTT.h"

再調(diào)用SEGGER_RTT_printf函數(shù)打印輸出:

這里SEGGER_RTT_printf和print不同的是:前面多了一個(gè)“終端號(hào)”參數(shù)。(我們使用終端0)

5RTT Viewer配置、輸出

和前面講述的SWV查看器類似,配置相關(guān)信息即可輸出。

安裝目錄:C:Program Files (x86)SEGGERJLink

下載程序到MCU,連接J-Link,打開安裝目錄下的J-Link RTT Viewer,配置參數(shù):

輸出效果:

6下載

為方便大家理解,提供源碼工程下載,參考代碼:

STM32F051(HAL)_JLink-RTT

STM32F103(HAL)_JLink-RTT

百度網(wǎng)盤:

https://pan.baidu.com/s/1aYBuHtOgtLqLvj6SsMYlQA

提取碼:nbd3

提示:

1.公眾號(hào)不支持外鏈接,請(qǐng)復(fù)制鏈接到瀏覽器打開。

2.源碼僅供個(gè)人學(xué)習(xí)參考,不一定適用于實(shí)際項(xiàng)目。

3.若鏈接失效,請(qǐng)關(guān)注公眾號(hào),回復(fù)『printf系列教程』獲取最新鏈接。

7

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 串行
    +關(guān)注

    關(guān)注

    0

    文章

    237

    瀏覽量

    33769
  • SWOT
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    7960
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    13608
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一種簡(jiǎn)單高效配置FPGA的方法

    本文描述了一種簡(jiǎn)單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設(shè)備。這種方法減少了硬件組件、板空間和成本。
    的頭像 發(fā)表于 10-24 14:57 ?253次閱讀
    <b class='flag-5'>一種</b>簡(jiǎn)單<b class='flag-5'>高效</b>配置FPGA的方法

    激光打印機(jī)好還是噴墨式打印機(jī)好

    激光打印機(jī)與噴墨式打印機(jī)作為目前市場(chǎng)上主流的兩打印設(shè)備,各自具有獨(dú)特的特點(diǎn)和適用場(chǎng)景。 、激光打印
    的頭像 發(fā)表于 10-14 13:48 ?406次閱讀

    還不會(huì)嗎?三分鐘讓你速通Printf~

    、Printf簡(jiǎn)介Printf個(gè)標(biāo)準(zhǔn)的c庫(kù)API,用來打印信息顯示的。Printf的底層輸
    的頭像 發(fā)表于 07-27 08:11 ?234次閱讀
    還不會(huì)嗎?三分鐘讓你速通<b class='flag-5'>Printf</b>~

    STM32CubeIDE printf浮點(diǎn)數(shù),浮點(diǎn)數(shù)丟失數(shù)值的原因?

    出來:第一種情況:A=2.0000;B=0.0000;第二情況:A=-2.0000; B
    發(fā)表于 06-03 07:07

    CC2340R5無法讀取到按鍵按下的動(dòng)作怎么解決?

    電平,自己實(shí)現(xiàn)長(zhǎng)按/短按的邏輯判斷。 調(diào)用接口GPIO_read;如下所示: MenuModule_printf()打印方式已調(diào)整為滾屏打印; 經(jīng)驗(yàn)證task1中的GPIO_toggle(CONFIG_GPIO_LED_GRE
    發(fā)表于 05-30 07:59

    關(guān)于使用DAVE 4開發(fā)XMC4200時(shí)UART打印的問題求解

    主題關(guān)于使用 DAVE 4 開發(fā) XMC4200 時(shí) UART 打印問題的技術(shù)詢問 目前,我在使用 DAVE 4 為 XMC4200 進(jìn)行開發(fā)時(shí)遇到了個(gè)問題。 按照論壇上提供的重定向配置指南,我
    發(fā)表于 05-21 06:35

    【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第九講 USART-printf打印實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?串口簡(jiǎn)介 ?GD32H757串口工作原理 ?使用printf打印信息
    的頭像 發(fā)表于 05-15 11:39 ?602次閱讀
    【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第九講 USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>實(shí)驗(yàn)

    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第九講 USART-printf打印實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: 串口簡(jiǎn)介 GD32F470串口工作原理 使用printf打印信息
    的頭像 發(fā)表于 05-13 10:14 ?1560次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第九講  USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>實(shí)驗(yàn)

    用keil仿真無法用printf打印怎么解決?

    用keil仿真 無法用printf打印.想用printf重定向到Usart1的方法,使printf打印信息能夠在UART#1的窗口
    發(fā)表于 04-11 08:20

    STM32的疑難雜癥之Printf的使用

    、Printf簡(jiǎn)介Printf個(gè)標(biāo)準(zhǔn)的C庫(kù)API,用來打印信息顯示的。Printf的底層輸
    的頭像 發(fā)表于 04-02 08:09 ?3213次閱讀
    STM32的疑難雜癥之<b class='flag-5'>一</b>:<b class='flag-5'>Printf</b>的使用

    M487JIDAE如何使用ITM功能實(shí)現(xiàn)printf打印?

    M487JIDAE如何使用ITM功能實(shí)現(xiàn)printf打印?
    發(fā)表于 01-16 08:03

    新型適用于太空的生物打印設(shè)備

    科研人員開發(fā)了一種嵌入式3D生物打印策略,利用一種懸浮培養(yǎng)基既能3D打印MBT生物墨水,又能原位培養(yǎng)打印出的腫瘤模型(圖3A)。
    的頭像 發(fā)表于 01-11 09:55 ?429次閱讀
    <b class='flag-5'>種</b>新型適用于太空的生物<b class='flag-5'>打印</b>設(shè)備

    解決printf無法打印輸出的問題

    FreeRTOS中直接使用newlib庫(kù)是有問題的,相信使用過freertos進(jìn)行printf都能發(fā)現(xiàn)這個(gè)問題,這個(gè)問題網(wǎng)上有兩種方法:1、使用printf.stdarg.c,問題在于,這個(gè)庫(kù)沒有
    的頭像 發(fā)表于 01-04 08:00 ?1631次閱讀
    解決<b class='flag-5'>printf</b>無法<b class='flag-5'>打印</b>輸出的問題

    研究人員設(shè)計(jì)一種新的3D噴墨打印技術(shù)

    據(jù)悉,只帶韌帶和肌腱的骨骼機(jī)械手現(xiàn)在可以通過次3D打印完成 —— 這是通過一種新的增材制造方法實(shí)現(xiàn)的,這種方法可以同時(shí)以高分辨率打印剛性
    的頭像 發(fā)表于 11-20 17:01 ?680次閱讀

    南京理工在3D打印生物光纖研究中獲重要進(jìn)展

    近日,南京理工大學(xué)電子工程與光電技術(shù)學(xué)院沈華教授課題組成功利用自研的懸浮式投影光固化3D打印方法制備出了一種高效、穩(wěn)定的新型生物光接口—漸變折射率水凝膠光纖
    的頭像 發(fā)表于 11-14 10:30 ?803次閱讀
    南京理工在3D<b class='flag-5'>打印</b>生物光纖研究中獲重要進(jìn)展