今天看代码的时候发现了新大陆,他的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(指令跟踪宏单元)相关推荐

  1. ARM调试(2):在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互

    在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互 文章目录 在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互 1. ...

  2. STM32调试利器之ITM

    折腾了许久,终于把 ITM 调试搞定了.首先看看效果图: 是的,你没有看错,以上所有的窗口都是由MDK支持的.这也是为什么我执着于ITM调试的原因了,因为这种调试手段实在是太方便了啊. 相信很多朋友在 ...

  3. STM32的ITM跟踪调试功能介绍及实现(一)KEIL篇

    ITM,(英文:Instrumentation Trace Macrocell,指令跟踪宏单元),是一种针对MCU进行跟踪调试的新方法,与打断点(Breakpoint)不同,ITM方法不需要暂停程序运 ...

  4. ITM机制-不用串口也能printf

    在PC上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用这些函数,我们可以很方便的调试程序. printf的方式 ...

  5. 单片机c语言中tbb,STM32学习之路入门篇之指令集及cortex——m3的存储系统

    ;   存储Rn的值到特殊功能寄存器的值 3).SReg可以是下表中的一个 2.IF-THEN 1).IF-THEN指令围成一个块,里面最多4条指令,它里面的指令可以条件执行. 2).IT使用形式: ...

  6. keil debug如何在watch直接修改变量值_printf系列教程03_SWO打印输出配置,基于Keil『Debug(printf)Viewer』...

    本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 标签:printf. SWD. SWO. SWV. ITM. JL ...

  7. ARM 之十二 Cortex-M 内核异常处理、异常定位方法、在线调试、Keil MDK-ARM 的使用

      Cortex-M 内核本身提供了非常强大的异常处理机制.它可以非常有效的捕捉非法的内存访问以及其他一些异常.而我们常用的开发工具的异常处理就是使用了 Cortex-M 核的异常处理机制.   在 ...

  8. Jlink工具箱工具总结

    JLink_Windows_V754d_x86_64.exe安装后生成的工具集如下: 一.J-Flash Lite(烧录工具) 首先硬件连接:J-link的SWD的接口对应连接MCU SWD接口,GN ...

  9. Cortex-M3存储器系统

     一.存储器系统的功能概览 1.Cortex-CM3存储器系统功能 1).存储器映射是预定义的,并且还规定好了那个位置使用那条总线. 2).Cortex-CM3的存储器系统支持"位带&q ...

最新文章

  1. 限量!Alibaba首发“Java成长笔记”,差距不止一点点
  2. 算法训练 P0103
  3. 一文读懂深度学习模型近年来重要进展(附梳理图)
  4. MSTP和MPLS专线有什么区别?——Vecloud
  5. Java中ListE对象赋值问题(引用传递和值传递)
  6. CSDN好多原创翻译的文章
  7. 如何保证进程间同步工作_冬季建房如何保证混凝土浇筑效果好,做好养护工作...
  8. 将DataFrame格式的数据存入到mysql数据库中
  9. mysql 触发器不能同时 insert or update or delete_MySQL6:触发器
  10. Zuul和Eureka的负载均衡示例
  11. python 无法读取文件 找不到文件
  12. python小工具集_Python 小工具集合
  13. 【hadoop】进阶篇一:MapReduce之Job的提交
  14. 头歌 初识Redis
  15. Leetcode刷题笔记——剑指offer II (六)【图】
  16. 关于VB提示ByRef参数类型不符的分析
  17. Ljava.lang.Object; cannot be cast to……异常
  18. 离一线城市越来越远?对不起,杭州没那么不堪
  19. 大数据系列 -- 数据埋点
  20. ERP时代即将结束,后ERP时代正在崛起

热门文章

  1. 【每天学点管理】—绩效面谈的两个技巧
  2. 温度PID的整定过程
  3. linux 批量解压.7z脚本
  4. 区块链黑客马拉松是到底是什么?
  5. 洋姜的腌制方法 怎样腌制洋姜好吃
  6. 第一章 MUD:创造世界的巫师
  7. 2022年最新江西机动车签字授权人模拟试题及答案
  8. 【爬虫】爬取B站UP的所有视频细节信息(通过UP名字)
  9. 扫描版pdf电子书修改背景色
  10. 什么是Shmoo图和Shmoo测试