在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

STM32Cube SWV實時跟蹤調(diào)試方法

冬至子 ? 來源:聊點嵌入式 ? 作者:聊點嵌入式 ? 2023-11-06 15:28 ? 次閱讀

之前的文章在講到調(diào)試的時候,一般都是大家熟悉的調(diào)試方法:通過打斷點,讓程序運行到某一個地方停下來,查看某些變量、寄存器等的狀態(tài);單步運行,看程序的執(zhí)行、跳轉(zhuǎn)是否跟預期一致;比較高級的是設置軟斷點,比如在讀寫某一個變量,或是某一變量值到達某種狀態(tài)時停下。這些方法有一個共同的特征,就是程序要停下來,讓我們觀察各種信息

有沒有一種方法,程序在持續(xù)的運行,某些變量的值能夠持續(xù)的輸出給我們,甚至是通過圖表的形式給我們觀察,甚至是后期保存下來。這樣在某些情況下是更直觀的、更有效的一種調(diào)試方法。

這種方法當然是存在的,比如通常會利用單片機的某一個串口向外發(fā)送數(shù)據(jù),再通過上位機串口調(diào)試軟件接收并顯示。除此之外,還有另一種方法,通過STM32系列單片機的SWV(Serial Wire Viewer)實時跟蹤技術來實現(xiàn)。

接下來我們通過一個簡單的例子,看看在CubeIDE下怎么通過單片機的SWV功能結合CubeIDE的ITM(Instrumentation Trace Macrocell)功能實現(xiàn)參數(shù)的實時跟蹤。需要說明的是,下面關于SWV實時跟蹤的功能介紹來源于CubeIDE的用戶手冊,覺得自己英文水平還行的可以直接去看手冊,更權威。

1. 端口配置

我們還是基于正點原子的F767開發(fā)板,在CubeMX里新建一個工程,具體設置見下圖。默認的Debug模式為JTAG,這里我們改為Trace Asynchronous Sw,調(diào)試模式改為SWD。這個時候PB3就會被使能,它的一個復用功能是SWO(Serial Wire Output),這個引腳配合SWD輸出實時跟蹤數(shù)據(jù),也即實現(xiàn)了SWV功能。

圖片

2. 調(diào)試配置

用CubeIDE打開生成的工程,點擊菜單Run->Debug Configurations,新建一個調(diào)試配置文件,在調(diào)試器標簽頁里,接口選SWD,使能SWV,Core Clock處填內(nèi)核實際運行頻率,這里是216 MHz。

圖片

接下來,連接開發(fā)板,進入調(diào)試模式。點擊菜單Window->Show View->SWV->SWV Trace Log,會在窗口下方打開SWV Trace Log標簽,如下圖。點擊Configure Trace圖標進行配置。

圖片

在配置窗口里我們使能PC Sampling,對內(nèi)核PC(Program Counter)值進行采樣,分辨率16384 Cycles/sample的含義是每次采樣間隔16384個時鐘周期。這個值是默認的,考慮到SWO端口異步工作頻率為2 MHz,這個分辨率不能太小,否則數(shù)據(jù)量太大會造成堵塞。Timestamps必須被使能,好知道有事件發(fā)生了。后邊的預分頻值同樣與SWO數(shù)據(jù)量大小有關。

圖片

點擊SWV Trace Log標簽頁右方的Start Trace圖標,見下圖,并啟動調(diào)試,則會看到SWV Trace Log標簽頁會持續(xù)輸出PC Sample數(shù)據(jù)。

圖片

當然,除了輸出PC Sample數(shù)據(jù)之外,還可以配置輸出Configure Trace窗口里的各種事件發(fā)生的情況,也可以輸出某些變量值,甚至是把輸出的變量以圖表的形式輸出。具體配置方法可參考用戶手冊去研究。

3. 代碼利用printf重定向輸出消息

我們知道printf是C語言標準庫的函數(shù),可以向屏幕打印字符串,嵌入式里一般被重定向到串口。在利用SWV進行調(diào)試時,我們可以把printf重定向到ITM的0通道,調(diào)試時,用戶代碼可以利用printf向外發(fā)送易讀的消息。

首先,Configure Trace里勾選0通道,見下圖。然后點擊CubeIDE菜單Window->Show View->SWV->SWV ITM Data Console,窗口下方會出現(xiàn)SWV ITM Data Console標簽頁,可以顯示ITM各通道輸出的信息。

圖片

接下來修改代碼,打開工程文件夾->Src->syscall.c文件,這個源文件里的函數(shù)配合C庫實現(xiàn)系統(tǒng)調(diào)用。找到_write函數(shù),完成printf到ITM的重定向。修改如下:

__attribute__((weak)) int _write(int file, char *ptr, int len)
{
  int DataIdx;


  for (DataIdx = 0; DataIdx < len; DataIdx++)
  {
    //__io_putchar(*ptr++);
    ITM_SendChar(*ptr++);
  }
  return len;
}

當然,把注釋掉的那一行修改成串口發(fā)送的話,就能把printf重定向到串口。

在main.c的while循環(huán)里添加如下代碼:

while (1)
{
  HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
  printf("LED0 is offn");
  HAL_Delay(500);
  HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);
  printf("LED0 is onn");
  printf("%dn",counter++);
}

重新編譯,進入調(diào)試模式,則可以在SWV ITM Data Console標簽頁里看到如下打印信息。

圖片

4. 小結

基于STM32Cube生態(tài)的SWV實時跟蹤調(diào)試方法就介紹到這里。需要說明的是,此方法在硬件上需要留出SWD接口和SWO引腳,正點原子STM32F767核心板上的SWD接口沒有引出SWO引腳,所以連接核心板的SWD無法用到SWV功能,需要通過ST-Link連接底板上的20針JTAG接口實現(xiàn)。

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

    關注

    31

    文章

    5363

    瀏覽量

    121021
  • STM32
    +關注

    關注

    2271

    文章

    10923

    瀏覽量

    357257
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137522
  • STM32單片機
    +關注

    關注

    59

    文章

    549

    瀏覽量

    58788
  • SWD
    SWD
    +關注

    關注

    1

    文章

    57

    瀏覽量

    11891
收藏 人收藏

    評論

    相關推薦

    stm32cube IDE配置方法

    stm32cube IDE配置方法stm32cube MX的方法一樣然后編譯,Project—Build all, 沒有錯誤警告后,開始下一步:下載程序其實就是利用
    發(fā)表于 01-10 07:49

    STM32Cube學習之一:點燈

    STM32Cube學習之一:點燈
    發(fā)表于 12-12 15:30 ?20次下載

    介紹STM32Cube的特點及應用

    2014年STM32 Roadshow:STM32Cube簡介
    的頭像 發(fā)表于 07-05 00:26 ?5157次閱讀

    使用STM32Cube輕松開發(fā)STM32

    STM32CubeSTM32開發(fā)更輕松
    的頭像 發(fā)表于 07-03 04:30 ?5718次閱讀

    STM32Cube到底包含哪些工具 ?

    STM32Cube到底包含哪些工具?
    的頭像 發(fā)表于 03-04 10:16 ?8543次閱讀

    STM32Cube介紹

    STM32Cube介紹
    發(fā)表于 12-08 15:51 ?19次下載
    <b class='flag-5'>STM32Cube</b>介紹

    UM1722_如何使用STM32Cube中的實時操作系統(tǒng)

    UM1722_如何使用STM32Cube中的實時操作系統(tǒng)
    發(fā)表于 11-22 19:16 ?2次下載
    UM1722_如何使用<b class='flag-5'>STM32Cube</b>中的<b class='flag-5'>實時</b>操作系統(tǒng)

    DB4639_STM32WB系列面向STM32Cube的Azure?實時操作系統(tǒng)軟件擴展

    DB4639_STM32WB系列面向STM32Cube的Azure?實時操作系統(tǒng)軟件擴展
    發(fā)表于 11-23 08:29 ?0次下載
    DB4639_<b class='flag-5'>STM32</b>WB系列面向<b class='flag-5'>STM32Cube</b>的Azure?<b class='flag-5'>實時</b>操作系統(tǒng)軟件擴展

    DB4638_STM32G0系列Azure?STM32Cube實時操作系統(tǒng)軟件擴展

    DB4638_STM32G0系列Azure?STM32Cube實時操作系統(tǒng)軟件擴展
    發(fā)表于 11-23 08:29 ?0次下載
    DB4638_<b class='flag-5'>STM32</b>G0系列Azure?<b class='flag-5'>STM32Cube</b>的<b class='flag-5'>實時</b>操作系統(tǒng)軟件擴展

    DB4640_STM32WL系列Azure?STM32Cube實時操作系統(tǒng)軟件擴展

    DB4640_STM32WL系列Azure?STM32Cube實時操作系統(tǒng)軟件擴展
    發(fā)表于 11-23 08:29 ?0次下載
    DB4640_<b class='flag-5'>STM32</b>WL系列Azure?<b class='flag-5'>STM32Cube</b>的<b class='flag-5'>實時</b>操作系統(tǒng)軟件擴展

    STM32Cube的X-CUBE-MEMS1擴展軟件中MotionCP實時攜帶位置庫入門

    電子發(fā)燒友網(wǎng)站提供《STM32Cube的X-CUBE-MEMS1擴展軟件中MotionCP實時攜帶位置庫入門.pdf》資料免費下載
    發(fā)表于 07-31 09:55 ?0次下載
    <b class='flag-5'>STM32Cube</b>的X-<b class='flag-5'>CUBE</b>-MEMS1擴展軟件中MotionCP<b class='flag-5'>實時</b>攜帶位置庫入門

    STM32Cube X-CUBE-MEMS1擴展的MotionGR實時手勢識別庫入門

    電子發(fā)燒友網(wǎng)站提供《STM32Cube X-CUBE-MEMS1擴展的MotionGR實時手勢識別庫入門.pdf》資料免費下載
    發(fā)表于 07-31 09:17 ?0次下載
    <b class='flag-5'>STM32Cube</b> X-<b class='flag-5'>CUBE</b>-MEMS1擴展的MotionGR<b class='flag-5'>實時</b>手勢識別庫入門

    STM32Cube培訓指南

    電子發(fā)燒友網(wǎng)站提供《STM32Cube培訓指南.pdf》資料免費下載
    發(fā)表于 07-31 15:02 ?2次下載
    <b class='flag-5'>STM32Cube</b>培訓指南

    STM32Cube在線培訓

    電子發(fā)燒友網(wǎng)站提供《STM32Cube在線培訓.pdf》資料免費下載
    發(fā)表于 08-01 14:23 ?3次下載
    <b class='flag-5'>STM32Cube</b>在線培訓

    STM32Cube LL庫的巧妙之處

    STM32Cube LL庫的巧妙之處
    的頭像 發(fā)表于 09-27 16:26 ?1456次閱讀
    <b class='flag-5'>STM32Cube</b> LL庫的巧妙之處
    主站蜘蛛池模板: 国产裸体美女视频全黄 | 种子天堂bt | 久久99精品久久久久久野外 | 看全色黄大色大片免费久久怂 | 免费的很黄很色的床小视频 | 色黄污在线看黄污免费看黄污 | 四虎影视色费永久在线观看 | 天天翘夜夜洗澡天天做 | 毛片一区二区三区 | 婷婷五月天.com | 中文字幕1区2区 | 国产精品久久久精品视频 | 四虎永久在线观看免费网站网址 | 夜夜夜爽爽爽久久久 | 天天插狠狠干 | 成人mv高清在线 | 欧美污视频网站 | 成人福利在线视频 | 午夜网站在线播放 | 成人综合色站 | 国产精品女仆装在线播放 | 国产精品天天影视久久综合网 | 男人和女人在床做黄的网站 | 国产精品欧美一区二区三区 | 日本色婷婷| 人人插人人干 | 麒麟色欧美影院在线播放 | 夜夜春色 | 91成人免费观看 | 伊人久久亚洲综合 | 天堂tv亚洲tv日本tv欧美人tv | 天天干天天摸天天操 | 欧美日韩在线一本卡 | 久久成人福利视频 | 在线毛片网站 | 在线天堂中文 | 九九久久久久午夜精选 | 亚洲一区二区三区电影 | 久久久久免费精品国产 | 韩国三级中文 | 午夜在线观看免费高清在线播放 |