日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何用 J-Link 来串口调试?

發布時間:2023/12/19 编程问答 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用 J-Link 来串口调试? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??

摘要:不知道大家在單片機開發中是如何打印調試信息的,大多數應該是用串口調試打印吧,在大多數的情況下,一般在制板和寫代碼時都會預留串口1做為調試打印用。

但是在實際開發如果沒有預留串口怎么辦?其實我們的下載器是可以用來作為調試打印來用的,只是很多小伙伴不知道這個功能而已,今天就來說一下如何用調試器JLink來打印信息。

1、JLink仿真調試器

下載器五花八門,但是我只用JLink,小巧方便攜帶。對于單片機開發者一般所用的下載器基本就是JLink和ST-Link。這兩者功能差不多,JLink是SEEGER公司的,ST-Link是ST公司的,而且只支持ST系列的芯片。

只用JLink下載器調試,原因就是這玩意體積小,只有四根線,用起來太方便了,YYDS!

J-Link OB ARM 仿真調試器

2、安裝JLink驅動

下載鏈接:https://www.segger.com/downloads/jlink/。

買回來JLink驅動后,一般賣家都會提供JLink的驅動程序,驅動安裝完成后就可以下載調試程序了。

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

當然我們現在要使用JLink的RTT功能(實時傳輸Real Time Transfer,可不是RT-Thread操作系統啊),就需要在官網下載完整的Jlink包,最新版本的是V7.52版本的,當然別的版本也可以。

下載完成后直接安裝可以了。安裝完成后你會在你的安裝目錄下看到如下內容:

JLink安裝目錄

3、移植RTT

安裝完成就好辦了,RTT源碼包就在我們剛剛安裝的JLINK驅動的目錄里面。我的目錄是:D:\Software\SEGGER\JLink_V644b\Samples\RTT

解壓后具體的目錄是:D:\Software\SEGGER\JLink_V644b\Samples\RTT\SEGGER_RTT_V644b\RTT

然后將這個RTT文件夾復制到我們的編寫程序的工程文件夾中

然后在項目中新建一個RTT分組,并將RTT文件夾中的兩個.c文件添加進來。

當然還要記得添加RTT的頭文件路徑

到這里基本就移植成功了,是不是很簡單,就是把RTT的源碼添加到工程中即可,完全不需要修改別的什么操作。

4、RTT打印輸出

接下來就可以打印輸出了。

#include?"sys.h" #include?"delay.h" #include?"usart.h" #include?"led.h" #include?"SEGGER_RTT.h"int?main(void) {?HAL_Init();?????????????????????//初始化HAL庫????Stm32_Clock_Init(336,8,2,7);???//設置時鐘,168Mhzdelay_init(168);????????????????//初始化延時函數LED_Init();??????//初始化LED?while(1){SEGGER_RTT_printf(0,"zhiguoxin666\r\n");} }

編譯沒有錯誤之后連接好下載器

連接好硬件配置為SW模式

之后打開JLink安裝目錄下的JLinkRTTViewer.exe

按照如下配置

將代碼下載到單片機中就可以看到已經完美的打印了。

5、RTT的使用技巧

1、RTT緩沖大小

有時候我們發現我們的信息不能完全的打印出來,可能是因為緩沖不夠,默認緩沖區大小事1K字節,如果不夠可以改大一點。

默認1024字節

2、多虛擬端口使用

RTT支持向不同的虛擬端口中打印信息,使用方法如下。

首先在RTT Viewer軟件中分別打開三個虛擬端口:

編寫代碼

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); }

編譯、鏈接、下載,觀察現象:

窗口0窗口1窗口2

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); }

編譯、鏈接、下載,觀察現象:

紅色綠色藍色

4、使用printf重定向

項目中使用printf的地方非常多,如果可以直接修改printf重定向到RTT組件,則會非常方便。使用的方法是直接使用RTT提供的API實現fputc。

原子的例程

重定義fputc函數

//重定義fputc函數? 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); }

編譯、鏈接、下載

結語:RTT和USRAT各有優點,要根據不同的情況選擇,如果遇到一個顯示項目沒有預留串口用來調試打印信息,可以用這個的方法。

當然打印調試還有很多方法,這只是其中的一種,如果你還有更好的方法,歡迎評論區留言。

-END-

大家好,我是張巧龍,一名教電子的大學老師,歡迎關注!

?

總結

以上是生活随笔為你收集整理的如何用 J-Link 来串口调试?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。