STM32 的ITM、DWT功能實現

来源:http://www.cnblogs.com/qiufengmuye/archive/2017/11/26/7899840.html
-Advertisement-
Play Games

I.STM32 DWT時間戳功能實現 1.m3、m4實測可用。 2.精度:1/內核頻率(s)。 3.實現流程: a.先使能DWT外設,由內核調試寄存器DEM_CR的位24控制,寫1使能。 b.使能CYCCNT寄存器之前,先清0。 c.使能CYCCNT寄存器,由DWT_CTRL的位0控制,寫1使能。 ...


I.STM32 DWT時間戳功能實現
  1.m3、m4實測可用。
  2.精度:1/內核頻率(s)。
  3.實現流程:
    a.先使能DWT外設,由內核調試寄存器DEM_CR的位24控制,寫1使能。
    b.使能CYCCNT寄存器之前,先清0。
    c.使能CYCCNT寄存器,由DWT_CTRL的位0控制,寫1使能。
  4.實現代碼如下:

    
 1 //寄存器基地址
 2 #define    DWT_CR    *(uint32_t*)0xE0001000
 3 #define    DWT_CYCCNT    *(uint32_t*)0xE0001004
 4 #define    DEM_CR    *(uint32_t*)0xE000EDFC
 5 
 6 //定義需使能位
 7 #define    DEM_CR_TRCENA    (1<<24)
 8 #define    DWT_CR_CYCCNTENA    (1<<0)
 9 
10 //DWT init
11 void DWT_init(void)
12 {
13     DEM_CR |= (uint32_t)DEM_CR_TRCENA;
14     DWT_CYCCNT = (uint32_t)0u;
15     DWT_CR |= (uint32_t)DWT_CR_CYCCNTENA;
16 }
17 //get DWT count
18 uint32_t DWT_TS_GET(void)
19 {
20     return((uint32_t)DWT_CYCCNT);
21 }
DWT

  5.使用場景:
    a.可用來實現延時功能。
    b.測量程式運行時間。
    c.。。。。。

II.STM32 ITM調試功能實現

  1.概念:ITM是一應用驅動的跟蹤源,它支持printf類的調試手段來跟蹤操作系統和應用事件,
  併發布判定的系統信息。ITM以包的形式發佈跟蹤信息。
  2.實際應用:當調試時需要列印出信息,而又不能占用串口時,ITM就派上用場了。
  3.m3、m4實測可用。
  4.配置步驟:
    a.配置TPIU並使能I/IO_TRACEN以使能TRACE的引腳
    b.向Trace Lock Access寄存器寫入0xC5ACCE55,以允許寫其他ITM寄存器
    c.向Trace Control寄存器寫入0x00010005,使能TPIU的同步包並使能整個ITM功能,
    寄存器中的ATB ID為0x01
    d.向ITM Trace Enable寄存器寫入0x01,以使能觸髮端口0
    e.向ITM Trace Privilege寄存器寫入0x01,關閉對觸髮端口7:0的屏蔽
    f.把需要輸出的值寫入觸髮端口0寄存器,這個步驟可以通過軟體完成(使用printf功能)
  5.註意事項:
    a.只能使用SWD方式調試
    b.需要使用到TRACESWO引腳,正常為PB3
  6.代碼實現:

  
 1 int main(void)
 2 {
 3     int dat = 0;
 4             
 5     DBGMCU->CR = 0x27;//使能TRACE的引腳
 6     ITM->LAR = 0xC5ACCE55;//允許寫其他ITM寄存器
 7     ITM->TCR = 0x00010005; //使能TPIU的同步包並使能整個ITM功能
 8     ITM->TER = 0x01;//以使能觸髮端口0
 9     ITM->TPR = 0x01;//關閉對觸髮端口7:0的屏蔽
10     ITM_RxBuffer = 0x5AA55AA5;//如果不需要scanf功能可屏蔽掉
11             
12     printf("input data");
13     for(;;)
14     {
15         scanf("%s",&dat);
16     if(dat)
17     {
18         ptintf("your input is %d\n",dat);
19         dat = 0;
20     }
21     }
22 }
23         
24 //重定義printf功能
25 int fputc(int ch,FILE *f)
26 {
27     return ITM_SendChar(ch);
28 }
29 //重定義scanf功能
30 int fgetc(FILE *f)
31 {
32     while(ITM_CheckChar() != 1)   __NOP();
33     return (ITM_ReceiveChar());
34 }
35         
ITM

  7.功能視窗:

     可使用以下兩種方式查看列印信息:
    a.使用keil debug功能。

    

    
    b.使用J-link SWO Viewer。

      打開J-link SWO Viewer工具,選擇相應的晶元型號。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 給大家介紹一下虛擬機和Xshell5連接的基本配置1.安裝虛擬機,跟著提示一步一步安裝即可,註意添加鏡像文件,虛擬機就完成了.2.下載一個Xshell5,安裝好之後.要修改虛擬機的網卡狀態 1).編輯ifcfg-eth0, 2).點一下i,出現--inner--,修改ONBOOT=YES,Esc退出 ...
  • 1.創建mysql用戶,mysql組. # useradd -s /bin/nologin -M mysql 查看是否創建成功. # id mysql 2.講mysql的二進位包解壓到/usr/local/目錄下. # cd /usr/local/ # tar -zxvf mysql-5.7.20- ...
  • Mysql的許可權 mysql中存在4個控制許可權的表,分別為user表,db表,tables_priv表,columns_priv表。 mysql許可權表的驗證過程為: 先從user表中的Host,User,Password這3個欄位中判斷連接的ip、用戶名、密碼是否存在,存在則通過驗證。 通過身份認證 ...
  • grep 簡介 grep(Global search REgular expression and Print out the line)是Linux上的文本處理三劍客之一,另外兩個是sed和awk. grep是文本搜索工具,根據用戶指定的pattern(由文本字元及正則表達式元字元編寫的過濾條件) ...
  • 首先安裝expect # yum -y install expect 命令格式 # ./expect IP COMM #expect是獨立的工具,所以不能用sh來執行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #!/usr/bin/expect ...
  • zabbix入門知識 zabbix中文手冊 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介紹 2.zabbix系統架構圖 3.zabbix的組件 4.zabbix支持的通訊協議 5.zabbix的工作模式 6.zabbix的監控過 ...
  • 系統環境:Centos7.4 今天在安裝 Nodejs8.7 的時候,報了一個警告: WARNING: C++ Compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++) 然後,查了一下自己系統上安裝的版本:4.8.5 好吧,不能用 yum ...
  • ls 顯示當前目錄內容 1)ls / (顯示根目錄下所有的目錄和文件) 2)ls l / (以列表的形式顯示根目錄下所有的目錄和文件) 絕對路徑和相對路徑 1)絕對路徑,以/開頭的都是絕對路徑,比如/home/pzm 2)相對路徑,以./ 或者../開頭的,./是指當前目錄,../是指上一層目錄 m ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...