MDK Debug (printf) Viewer打印數據


1.Target Options -> Debug -> Settings(JLink) -> Debug里ort選擇SW模式

2.在Target Options -> Debug -> Settings(JLink) -> Trace里選擇Enable

3.Core freq設為64MHz(以NRF52832為例)

4. 設置ITM Port的值如下所示

5.在工程中添加.c文件如下

#include "stdio.h"

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000

struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;

int fputc(int ch, FILE *f) {
  if (DEMCR & TRCENA) {
    while (ITM_Port32(0) == 0);
    ITM_Port8(0) = ch;
  }
  return(ch);
}
//或者
int fputc(int ch, FILE *f) {
   ITM_SendChar(ch);//內聯函數
   return(ch);
}

6.用Debug模式運行工程,Debug (printf) Viewer中即可以查看printf的輸出信息。

 

 注意:

1.Core freq頻率需要設置的與板子運行頻率相同

2.ITM可以理解為一個可以提供調試數據結果的MCU內部的東東,他首先是一個硬件存在,在Cortex-M3,M4,M7上都支持(很遺憾,性價比很高的M0,M0+是不支持的)

3.沒有提供SWO管腳,是無法做ITM跟蹤調試的(將內核信息輸出到IDE或者RTT終端)

參考:

https://www.cnblogs.com/GBRgbr/p/4450556.html

https://blog.csdn.net/hanchaoman/article/details/102494914


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM