1寫在前面
SWO:Serial Wire Output,串行線輸出
RTT:Real Time Transfer,實時傳輸
前面SWO文章,實現(xiàn)原理是通過MCU的SWO引腳輸出信息(到顯示終端SWV)。
而本文講述的RTT不需要通過額外SWO引腳,即可實現(xiàn)printf輸出,而且性能(耗時)遠高于SWO。
2關于RTT
SEGGER實時傳輸(RTT)是一種在嵌入式應用中實現(xiàn)交互式用戶I/O的技術。
它結合了SWO和半主機( semihosting)的優(yōu)點,具有很高的性能。
使用RTT,可以從目標微控制器輸出信息,并以非常高的速度向應用程序發(fā)送輸入,而不會影響目標的實時性。
Cortex - M0不支持SWO,而本文講述的RTT則支持Cortex - M0,文末提供STM32F0工程。
3關于J-Link RTT Viewer
J-Link RTT Viewer是在調(diào)試主機上使用RTT功能的Windows GUI應用程序。
RTT Viewer可以獨立使用,打開自己與J-Link的連接,并與正在運行的調(diào)試會話目標或并行,連接到它并使用現(xiàn)有的J-Link連接。
RTT Viewer支持RTT的主要功能:
·通道0上的終端輸出
·將文本輸入發(fā)送到通道0
·最多16個虛擬終端,只有一個目標通道
·控制文本輸出:彩色文本,擦除控制臺
·在通道1上記錄數(shù)據(jù)
·
·
本文主要結合J-Link RTT Viewer講述,當然支持RTT的還有J-Link RTT Client 和J-Link RTT Logger。
更多相關介紹,可以參看:
https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer
(公號不支持外鏈接,請復制鏈接到瀏覽器打開)
4獲取RTT源碼
我們需要在工程中添加RTT源碼,同時需要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之后,復制整個RTT目錄源碼到你工程。
提示:
解壓之后,只需復制RTT目錄就行。
4.1 添加RTT到工程
添加源碼文件到工程主要有兩個步驟:1.添加源碼文件到工程。 2.添加文件路徑。
這里不講述具體添加過程,Keil 和 IAR之前有講述,請參看我的文章:
Keil新建基礎軟件工程
IAR新建基礎軟件工程
當然,我下面有提供添加好的源碼工程。
4.2 應用程序
調(diào)用RTT的打印,和常規(guī)的printf類似。
添加頭文件:#include "SEGGER_RTT.h"
再調(diào)用SEGGER_RTT_printf函數(shù)打印輸出:
這里SEGGER_RTT_printf和print不同的是:前面多了一個“終端號”參數(shù)。(我們使用終端0)
5RTT Viewer配置、輸出
和前面講述的SWV查看器類似,配置相關信息即可輸出。
安裝目錄: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.公眾號不支持外鏈接,請復制鏈接到瀏覽器打開。
2.源碼僅供個人學習參考,不一定適用于實際項目。
3.若鏈接失效,請關注公眾號,回復『printf系列教程』獲取最新鏈接。
7
-
串行
+關注
關注
0文章
237瀏覽量
34127 -
SWOT
+關注
關注
0文章
4瀏覽量
8004 -
Printf
+關注
關注
0文章
83瀏覽量
13908
發(fā)布評論請先 登錄
相關推薦
PRINTF函數(shù)無法打印出浮點數(shù)內(nèi)容是為什么?
光墨打印機是什么_光墨打印機為何不能普及
STM32F1HAL TIM2定時printf打印出現(xiàn)丟數(shù)值的原因?
STM32CubeIDE printf浮點數(shù),浮點數(shù)丟失數(shù)值的原因?
CC2340R5無法讀取到按鍵按下的動作怎么解決?
關于使用DAVE 4開發(fā)XMC4200時UART打印的問題求解
【GD32H757Z海棠派開發(fā)板使用手冊】第九講 USART-printf打印實驗

評論