欧美在线专区-欧美在线伊人-欧美在线一区二区三区欧美-欧美在线一区二区三区-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

    主站蜘蛛池模板: 一男n女高h后宫| 狠狠色狠狠色综合日日不卡| 在线va| 波多野结衣女上司| 亚洲国产一成人久久精品| 免费人成在线观看视频播放 | 国产999| 欧美边吃奶边爱边做视频| 香港黄色碟片黄色碟片| 涩涩爱影院| 182在线播放| 污污的视频在线播放| 免费人成在线| 你懂的在线看| 中国一级毛片视频免费看| 免费人成在线观看视频播放 | 美女尿口18以下禁止观看免费| 巨大欧美黑人xxxxbbbb| 三上悠亚在线电影| 嫩草影院在线入口| 免费无遮挡肉动漫在线观看| 处处吻动漫免费观看全集| 久久免费视频一区| 又黄又爽又猛的视频免费| 国产精品视频第一区二区三区| 波多野结衣www| 杨晨晨白丝mm131| av成人在线电影| 美女的尿口无遮掩的照片| 免费一级做a爰片久久毛片潮喷 | 一个人看的视频在线| 全球全球gogo专业摄影| 偷窥无罪之诱人犯罪| 日韩中文在线播放| 黄色a级免费| 国漫永生第二季在线观看| 伊人久久精品一区二区三区| 色丁香在线| 搞逼视频免费看| 丁香伊人| 国产色综合久久无码有码|