cotex_m3内核提供的ITM串口打印调试

cotex_m3内核的ARM提供了ITM串口打印观测的功能,可以不用ARM单片机自己的串口就可在开发时候串口打印调试.节约了宝贵的内部资源,同时也为调试提供了方便.使用方法如下:

1 将下面的SWO_Printf.c加入到工程中

/*SWO_Printf*/
#include <stdio.h>
/*1 ÔÚkeil mdkÖÐÑ¡ÔñʹÓÃswo; 2http://blog.csdn.net/xiaolei05/article/details/8526021 */
//Add ITM Port register definitions to your source code.
#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);
}

2,然后调试选择sw方式,芯片的主频率要设置正确,否则出现乱码异常,设置如下

3 在仿真下打开KEIL_MDK的view-seiral windows - debug(printf) view

4使用printf开始打印调试

时间: 2024-10-12 19:30:48

cotex_m3内核提供的ITM串口打印调试的相关文章

STM32M CUBE实现printf打印调试信息以及实现单字节接收

在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不可以直接使用的,必须做点对库函数的改动. 详细工程下载地址: http://download.csdn.net/detail/liucheng5037/8847961 STM32M CUBE是ST官方提供的库以及初始化工具,很好很强大,但是在UART方面值提供了如下函数: HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *

代码调试之串口打印

以前习惯用jlink调试代码,最近发现jlink老是出现问题,丢固件.无法仿真等等,甚是苦恼,无奈用串口打印的方式来替代jlink调试: 串口调试需要使用到半主机模式,具体的调用代码如下: #pragma import(__use_no_semihosting) struct __FILE { int handle; }; FILE __stdout; void _sys_exit ( int x ) { x = x; } int fputc ( int ch, FILE *f ) { whil

内核启动tick(节拍)值打印

[ 0.525000] NTFS driver 2.1.30 [Flags: R/W]. [ 0.525000] JFFS2 version 2.2. (NAND) (SUMMARY) 漏 2001-2006 Red Hat, Inc. [ 0.530000] msgmni has been set to 116 [ 0.540000] io scheduler noop registered [ 0.540000] io scheduler deadline registered [ 0.54

斑马105SLPlus串口打印二维码

1.根据说明书调试硬件,校准介质还有色带(很重要),我自己搞了好几天才搞明白. 2.设置好参数,比如打印介质连续.非连续,热敏还是热转质 3.打印机上电后悔自动校准,校准成功后就可以直接通过串口打印,设置好通讯参数 4.主要代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq

Keil串口仿真调试

★用到的软件 ●Keil开发软件 ●虚拟串口软件 ●串口调试小助手 ★软件介绍 1.虚拟串口软件 对于笔记本电脑来说,没有自带串口使用虚拟串口软件可以模拟真实的串口.程序可以利用虚拟串口与其他串口交换数据.Virtual Serial Ports Driver是一款非常强大的虚拟串口的软件,一次可以创建两个虚拟串口,并且这两个串口是已经被连接起来的,相当于一根串口线一样. 使用虚拟软件虚拟的端口: 2.串口调试小助手 串口调试小助手界面上有一个发送区和一个接收区.它们都是相对于上位机(电脑)而言

串口打印问题

串口打印的时候需要重新改变一个函数“int fputc(int ch,FILE *f”,如果有数据需要输出打印的时候,通过这个函数把数据送到串口上:而且还要进入keil软件的“options”功能,打开“target”选项卡,把“Use MicroLIB”勾选上才可以.通过这可以发现有时不一定是程序问题,还可能是软件配置不完整,还有可能是硬件的问题呢.

S5PV210之添加缺少的-内核提供的&#39;.h&#39;文件 linux3.0.8驱动

怎样解决编译时出现内核提供的函数或变量没有定义,使用source insight搜索功能找到声明的头文件,然后包含该头件就行了: 比如: error: implicit declaration of function 'copy_from_user' 解决:使用source insight搜索功能,可以找到copy_from_user函数是在linux/uaccess.h 头文件中定义,所以包含此头文件就行了. S5PV210之添加缺少的-内核提供的'.h'文件 linux3.0.8驱动,布布扣

C# Serial串口打印

项目中需要使用串口热敏打印机,所以研究一下串口打印. using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.IO.Ports; using System.Collections; using System.Windows.Forms; using System.Drawing; namespace PrinterTest { public class P

Mapreduce打印调试输出

Mapreduce打印调试内容: 一.启动JobHistoryServer mr-jobhistory-daemon.sh start historyserver [[email protected] sbin]$ jps 3165 NodeManager 2580 NameNode 2440 QuorumPeerMain 3208 Master 2682 DataNode 3548 HMaster 3045 ResourceManager 2962 DFSZKFailoverControlle