欧美在线专区-欧美在线伊人-欧美在线一区二区三区欧美-欧美在线一区二区三区-pornodoxxx中国妞-pornodoldoo欧美另类

position>home>Basketball

基于STM32CubeProg、『Serial Wire Viewer』SWO打印輸出

[導讀]SWO串行線輸出是基于單引腳、異步串行通信,打印可在Cortex-M3/M4/M7上使用,輸出并由主調試器探測支持,基于它是打印利用Cortex內核中ITM模塊來實現此功能。


基于STM32CubeProg、『Serial Wire Viewer』SWO打印輸出

作者 | strongerHuang

微信公眾號?|?嵌入式專欄


本文原創首發于公眾號 『嵌入式專欄』,輸出為《printf系列教程》的基于一篇,后臺回復“printf系列教程”更多該系列更多內容。打印

1寫在前面

SWD:Serial Wire Debug,輸出串行線調試

SWO:Serial Wire Output,基于串行線輸出

SWV:Serial Wire Viewer,打印串行線查看器

ITM:Instrumentation Trace Macrocell,輸出指令跟蹤微單元?;?


SWO串行線輸出是打印單引腳、異步串行通信,輸出可在Cortex-M3/M4/M7上使用,并由主調試器探測支持。


它是利用Cortex內核中ITM模塊來實現此功能。


連接引腳:


SWO輸出,需要一根SWO(引腳)線,同時需要借助SWV(查看器)查看數據,我打算整理多種查看方法:

·基于Keil的『Debug(printf)Viewer』

·基于IAR的『Terminal IO』

·基于ST-LINK Utility的『Serial Wire Viewer』

·基于J-Link的『SWO Viewer』

·基于STM32CubeProg的『Serial Wire Viewer』


本文主要是第三種基于STM32CubeProg的『Serial Wire Viewer』,會結合STM32,ST-link工具講述相關配置。


想更加了解ITM,請參看《printf系列教程03》中第二章節<關于ITM>。



2SWO引腳配置

SWO引腳可以理解為UART的Tx引腳,如果不連接此引腳,則(SWV)終端不會接收打印信息。


對于STM32而言,只要是Cortex-M3/M4/M7內核的MCU都有SWO引腳


而Cortex-M0則沒有此項功能,包含STM32F0、STM32L0和STM32G0等。


在STM32CubeMX工具中,Debug選項進行如下配置即可。



3SWO輸出代碼

在STM32CubeProg的『Serial Wire Viewer』顯示打印信息?和 ST-LINK Utility類似,與Keil、IAR差異在于:顯示的位置不同,MCU中代碼其實一樣。


3.1 重定義fputc

和UART實現printf打印輸出區別就是:將重定義代碼中UART發送字符,改為ITM發送字符。

    int fputc(int ch, FILE *f){  ITM_SendChar(ch); return ch;}


    ITM_SendChar說明

    這個函數位于core_cm3.h(或cm4 cm7)中,直接調用即可。


    修改ITM端口

    比如:修改成使用ITM端口1,修改該函數對應值即可:


    提示:若軟件修改了ITM端口,需要使能對應ITM刺激(Stimulus)端口才能正常打印輸出。



    4SWV終端配置及輸出

    顯示終端就是STM32CubeProg這個上位機軟件。


    STM32CubeProg下載地址:

    https://www.st.com/en/development-tools/stm32cubeprog.html

    (公號不支持外鏈接,請復制鏈接到瀏覽器打開)


    推薦閱讀我的文章:STM32CubeProg介紹、下載、安裝和使用教程


    燒寫程序到MCU,通過ST-Link連接,打開STM32CubeProg軟件,從菜單進入SWV:


    配置時鐘和使能ITM端口:


    提示:ITM端口默認使用port0,也可修改軟件(見上面軟件),實現0~31任意端口。


    4.1 輸出效果


    提示:

    1.CPU時鐘必須相同;

    2.ITM端口號,軟件和查看器(SWV)配置須一致;



    5下載

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

    STM32F103(HAL)_SWO

    STM32F411(HAL)_SWO


    百度網盤:

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


    提取碼:nbd3


    提示:

    1.公眾號不支持外鏈接,請復制鏈接到瀏覽器打開。

    2.源碼僅供個人學習參考,不一定適用于實際項目。

    3.若鏈接失效,請關注公眾號,回復『printf系列教程』獲取最新鏈接。



    6

    說明

    1.該文檔僅供個人學習使用,版權所有,禁止商用。


    2.本文由我一個人編輯并整理,難免存在一些錯誤。


    3.本文收錄于公眾號『嵌入式專欄』,關注微信公眾號回復【printf系列教程】即可查看全系列教程。


    ------------ END------------

    推薦閱讀:
    USB PD快速充電通信原理
    C語言實現面向對象的原理
    無MMU搶占式操作系統的搶占工作原理
    關注 微信公眾號『strongerHuang』,后臺回復“1024”查看更多內容,回復“加群”按規則加入技術交流群。


    長按前往圖中包含的公眾號關注


    點擊“ 閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看。

    免責聲明:本文內容由21ic獲得授權后發布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!

    Popular articles

    主站蜘蛛池模板: 国语对白91| 免费看a级黄色片| 一个人看的www免费高清中文字幕| 一级大黄色片| 春日野吉衣| 精品伊人久久大线蕉地址| 亲密爱人免费完整在线观看| 日本哺乳期xxxx| 波多野结衣两部黑人mp4| 在公交车上弄到高c了公交车视频| 18观看免费永久视频| 用我的手指搅乱吧未增删翻译| 亚洲欧美日韩在线观看播放| 久久午夜神器| 日日操影院| 精品久久久久久久中文字幕 | 彩虹男gary网站| 真实的和子乱拍免费视频| 男人的j插入女人的p| 日韩一卡2卡3卡4卡| ssss国产在线观看| 琪琪色在线观看| 四虎永久在线精品免费影视| 人人爽人人澡人人高潮| 男人让女人爽30分钟免费| 女人让男人直接桶| а√天堂资源地址在线官网 | 在线www| 日韩大片观看网址| 一级片在哪里看| 在线观看国产| 亚洲欧美日韩中文无线码| 深夜a级毛片| 日本三级吃奶乳视频在线播放| 黄色一级大片| 波多野结衣456| 99久久精品免费看国产一区二区三区| 一级免费毛片| 最近高清中文在线国语字幕 | 妖精动漫在线观看| 日本理论在线|