STM32 ITM(指令跟踪宏单元)
今天看代码的时候发现了新大陆,他的printf不是用串口发的,搞得我还在研究串口是怎么弄的
#define ITM_STIM_U32 (*(volatile unsigned int*)0xE0000000) // Stimulus Port Register word acces
#define ITM_STIM_U8 (*(volatile char*)0xE0000000) // Stimulus Port Register byte acces
#define ITM_ENA (*(volatile unsigned int*)0xE0000E00) // Trace Enable Ports Register
#define ITM_TCR (*(volatile unsigned int*)0xE0000E80) // Trace control registeruint8_t SwoPt_EnCheck(void)
{if ((ITM_TCR & 1) == 0) {return 0;}if ((ITM_ENA & 1) == 0) {return 0;} return 1;
}void SwoPt_sendByte(uint8_t SwoPt_c)
{if(SwoPt_EnCheck()){if(ITM_STIM_U8 & 1){ITM_STIM_U8 = SwoPt_c;}}
}#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printfset to 'Yes') calls __io_putchar() */#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */PUTCHAR_PROTOTYPE
{/* Place your implementation of fputc here *//* e.g. write a character to the USART *///USART_SendData(EVAL_COM1, (uint8_t) ch);SwoPt_sendByte((uint8_t) ch);/* Loop until the end of transmission *///while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)//{}return ch;
}
这个是stm32f407LGT6的代码,贴上就能用
选择调试模式
打开窗口
如果出问题
在下面设置成你当前的主频频率
STM32 ITM(指令跟踪宏单元)相关推荐
- ARM调试(2):在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互
在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互 文章目录 在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互 1. ...
- STM32调试利器之ITM
折腾了许久,终于把 ITM 调试搞定了.首先看看效果图: 是的,你没有看错,以上所有的窗口都是由MDK支持的.这也是为什么我执着于ITM调试的原因了,因为这种调试手段实在是太方便了啊. 相信很多朋友在 ...
- STM32的ITM跟踪调试功能介绍及实现(一)KEIL篇
ITM,(英文:Instrumentation Trace Macrocell,指令跟踪宏单元),是一种针对MCU进行跟踪调试的新方法,与打断点(Breakpoint)不同,ITM方法不需要暂停程序运 ...
- ITM机制-不用串口也能printf
在PC上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用这些函数,我们可以很方便的调试程序. printf的方式 ...
- 单片机c语言中tbb,STM32学习之路入门篇之指令集及cortex——m3的存储系统
; 存储Rn的值到特殊功能寄存器的值 3).SReg可以是下表中的一个 2.IF-THEN 1).IF-THEN指令围成一个块,里面最多4条指令,它里面的指令可以条件执行. 2).IT使用形式: ...
- keil debug如何在watch直接修改变量值_printf系列教程03_SWO打印输出配置,基于Keil『Debug(printf)Viewer』...
本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 标签:printf. SWD. SWO. SWV. ITM. JL ...
- ARM 之十二 Cortex-M 内核异常处理、异常定位方法、在线调试、Keil MDK-ARM 的使用
Cortex-M 内核本身提供了非常强大的异常处理机制.它可以非常有效的捕捉非法的内存访问以及其他一些异常.而我们常用的开发工具的异常处理就是使用了 Cortex-M 核的异常处理机制. 在 ...
- Jlink工具箱工具总结
JLink_Windows_V754d_x86_64.exe安装后生成的工具集如下: 一.J-Flash Lite(烧录工具) 首先硬件连接:J-link的SWD的接口对应连接MCU SWD接口,GN ...
- Cortex-M3存储器系统
一.存储器系统的功能概览 1.Cortex-CM3存储器系统功能 1).存储器映射是预定义的,并且还规定好了那个位置使用那条总线. 2).Cortex-CM3的存储器系统支持"位带&q ...
最新文章
- 限量!Alibaba首发“Java成长笔记”,差距不止一点点
- 算法训练 P0103
- 一文读懂深度学习模型近年来重要进展(附梳理图)
- MSTP和MPLS专线有什么区别?——Vecloud
- Java中ListE对象赋值问题(引用传递和值传递)
- CSDN好多原创翻译的文章
- 如何保证进程间同步工作_冬季建房如何保证混凝土浇筑效果好,做好养护工作...
- 将DataFrame格式的数据存入到mysql数据库中
- mysql 触发器不能同时 insert or update or delete_MySQL6:触发器
- Zuul和Eureka的负载均衡示例
- python 无法读取文件 找不到文件
- python小工具集_Python 小工具集合
- 【hadoop】进阶篇一:MapReduce之Job的提交
- 头歌 初识Redis
- Leetcode刷题笔记——剑指offer II (六)【图】
- 关于VB提示ByRef参数类型不符的分析
- Ljava.lang.Object; cannot be cast to……异常
- 离一线城市越来越远?对不起,杭州没那么不堪
- 大数据系列 -- 数据埋点
- ERP时代即将结束,后ERP时代正在崛起