手把手教你把JLink變成串口調(diào)試助手
時(shí)間:2021-08-19 15:18:11
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]擊上方“果果小師弟”,選擇“置頂/星標(biāo)公眾號(hào)”干貨福利,第一時(shí)間送達(dá)!摘要:不知道大家在單片機(jī)開(kāi)發(fā)中是如何打印調(diào)試信息的,大多數(shù)應(yīng)該是用串口調(diào)試打印吧,在大多數(shù)的情況下,一般在制板和寫代碼時(shí)都會(huì)預(yù)留串口1做為調(diào)試打印用。但是在實(shí)際開(kāi)發(fā)如果沒(méi)有預(yù)留串口怎么辦?其實(shí)我們的下載器是可以...
擊上方“果果小師弟”,選擇“置頂/星標(biāo)公眾號(hào)”
但是在實(shí)際開(kāi)發(fā)如果沒(méi)有預(yù)留串口怎么辦?其實(shí)我們的下載器是可以用來(lái)作為調(diào)試打印來(lái)用的,只是很多小伙伴不知道這個(gè)功能而已,今天就來(lái)說(shuō)一下如何用調(diào)試器JLink來(lái)打印信息。J-Link OB ARM 仿真調(diào)試器 https://www.segger.com/downloads/jlink/ 當(dāng)然我們現(xiàn)在要使用JLink的RTT功能(實(shí)時(shí)傳輸Real Time Transfer,可不是RT-Thread操作系統(tǒng)啊),就需要在官網(wǎng)下載完整的Jlink包,最新版本的是V7.52版本的,當(dāng)然別的版本也可以。下載完成后直接安裝可以了。安裝完成后你會(huì)在你的安裝目錄下看到如下內(nèi)容:JLink安裝目錄 解壓后具體的目錄是: 然后將這個(gè)RTT文件夾復(fù)制到我們的編寫程序的工程文件夾中 然后在項(xiàng)目中新建一個(gè) 當(dāng)然還要記得添加 到這里基本就移植成功了,是不是很簡(jiǎn)單,就是把RTT的源碼添加到工程中即可,完全不需要修改別的什么操作。 編譯沒(méi)有錯(cuò)誤之后連接好下載器連接好硬件 配置為SW模式 之后打開(kāi)JLink安裝目錄下的 按照如下配置 將代碼下載到單片機(jī)中就可以看到已經(jīng)完美的打印了。默認(rèn)1024字節(jié) 編寫代碼窗口0 窗口1 窗口2 時(shí)用時(shí)在字符串前面加上對(duì)應(yīng)顏色的宏定義就可以了。紅色 綠色 藍(lán)色 原子的例程 重定義fputc函數(shù) 結(jié)語(yǔ):RTT和USRAT各有優(yōu)點(diǎn),要根據(jù)不同的情況選擇,如果遇到一個(gè)顯示項(xiàng)目沒(méi)有預(yù)留串口用來(lái)調(diào)試打印信息,可以用這個(gè)的方法。當(dāng)然打印調(diào)試還有很多方法,這只是其中的一種,如果你還有更好的方法,歡迎評(píng)論區(qū)留言喲~
—— The End?——
干貨福利,第一時(shí)間送達(dá)!
摘要:不知道大家在單片機(jī)開(kāi)發(fā)中是如何打印調(diào)試信息的,大多數(shù)應(yīng)該是用串口調(diào)試打印吧,在大多數(shù)的情況下,一般在制板和寫代碼時(shí)都會(huì)預(yù)留串口1做為調(diào)試打印用。但是在實(shí)際開(kāi)發(fā)如果沒(méi)有預(yù)留串口怎么辦?其實(shí)我們的下載器是可以用來(lái)作為調(diào)試打印來(lái)用的,只是很多小伙伴不知道這個(gè)功能而已,今天就來(lái)說(shuō)一下如何用調(diào)試器JLink來(lái)打印信息。
1、JLink仿真調(diào)試器
下載器五花八門,但是我只用JLink,小巧方便攜帶。對(duì)于單片機(jī)開(kāi)發(fā)者一般所用的下載器基本就是JLink和ST-Link。這兩者功能差不多,JLink是SEEGER公司的,ST-Link是ST公司的,而且只支持ST系列的芯片。只用JLink下載器調(diào)試,原因就是這玩意體積小,只有四根線,用起來(lái)太方便了,YYDS!2、安裝JLink驅(qū)動(dòng)
下載鏈接:https://www.segger.com/downloads/jlink/。買回來(lái)JLink驅(qū)動(dòng)后,一般賣家都會(huì)提供JLink的驅(qū)動(dòng)程序,驅(qū)動(dòng)安裝完成后就可以下載調(diào)試程序了。3、移植RTT
安裝完成就好辦了,RTT源碼包就在我們剛剛安裝的JLINK驅(qū)動(dòng)的目錄里面。我的目錄是:D:\Software\SEGGER\JLink_V644b\Samples\RTT
D:\Software\SEGGER\JLink_V644b\Samples\RTT\SEGGER_RTT_V644b\RTT
RTT
分組,并將RTT
文件夾中的兩個(gè).c
文件添加進(jìn)來(lái)。RTT
的頭文件路徑4、RTT打印輸出
接下來(lái)就可以打印輸出了。#include?"sys.h"
#include?"delay.h"
#include?"usart.h"
#include?"led.h"
#include?"SEGGER_RTT.h"
int?main(void)
{?
????HAL_Init();?????????????????????//初始化HAL庫(kù)????
????Stm32_Clock_Init(336,8,2,7);???//設(shè)置時(shí)鐘,168Mhz
?delay_init(168);????????????????//初始化延時(shí)函數(shù)
?LED_Init();??????//初始化LED?
?
?while(1)
?{
?????????SEGGER_RTT_printf(0,"zhiguoxin666\r\n");
?}
}
JLinkRTTViewer.exe
5、RTT的使用技巧
1、RTT緩沖大小
有時(shí)候我們發(fā)現(xiàn)我們的信息不能完全的打印出來(lái),可能是因?yàn)榫彌_不夠,默認(rèn)緩沖區(qū)大小事1K字節(jié),如果不夠可以改大一點(diǎn)。2、多虛擬端口使用
RTT支持向不同的虛擬端口中打印信息,使用方法如下。首先在RTT Viewer軟件中分別打開(kāi)三個(gè)虛擬端口:while(1)
{
?SEGGER_RTT_SetTerminal(0);
?SEGGER_RTT_printf(0,"zhiguoxin666,SEGGER?RTT?Terminal?0!\r\n");
?SEGGER_RTT_SetTerminal(1);
?SEGGER_RTT_printf(0,"zhiguoxin666,SEGGER?RTT?Terminal?1!\r\n");
?SEGGER_RTT_SetTerminal(2);
?SEGGER_RTT_printf(0,"zhiguoxin666,SEGGER?RTT?Terminal?2!\r\n");
?delay_ms(1000);
}
編譯、鏈接、下載,觀察現(xiàn)象:3、修改打印字符顏色
RTT支持不同顏色的字符顯示。while(1)
{
?SEGGER_RTT_SetTerminal(0);
?SEGGER_RTT_printf(0,RTT_CTRL_TEXT_RED"zhiguoxin666,SEGGER?RTT?Terminal?0!\r\n");
?SEGGER_RTT_SetTerminal(1);
?SEGGER_RTT_printf(0,RTT_CTRL_TEXT_GREEN"zhiguoxin666,SEGGER?RTT?Terminal?1!\r\n");
?SEGGER_RTT_SetTerminal(2);
?SEGGER_RTT_printf(0,RTT_CTRL_TEXT_BLUE"zhiguoxin666,SEGGER?RTT?Terminal?2!\r\n");
?delay_ms(1000);
}
編譯、鏈接、下載,觀察現(xiàn)象:4、使用printf重定向
項(xiàng)目中使用printf的地方非常多,如果可以直接修改printf重定向到RTT組件,則會(huì)非常方便。使用的方法是直接使用RTT提供的API實(shí)現(xiàn)fputc。//重定義fputc函數(shù)?
int?fputc(int?ch,?FILE?*f)
{??
????SEGGER_RTT_PutChar(0,?ch);
?return?ch;
}
替換之前的代碼:while(1)
{
?printf("zhiguoxin666?,printf?SEGGER?RTT?Terminal!\r\n");
?delay_ms(1000);
}
編譯、鏈接、下載—— The End?——