我们在STM32开发调试过程中,常常需要做些直观的输出,如果手头没有相关的设备或仪器,我们可以使用 IDE自带的工具。这里分享两个基于MDK  IDE的调试输出技巧。

一、使用其自带的逻辑分析仪查看波形。

比方我们需要查看STM32定时器的PWM输出,手头又没有示波器或逻辑分析仪, 尤其学生族。我们可以用MDK自带的逻辑分析仪来察看结果。

假设基于某一款STM32F4芯片,输出一个脉宽为100us,占空比为40%的波形。使用TIM3的通道1输出PWM波形,用到GPIOA_6,即PA6.

STM32定时器的参数配置我这里就省略了。我开启定时器的比较中断和更新中断,在中断里将PA口的IDR值读到一个全局变量TIM3_CH1_OUT里。

下面主要介绍跟LA[逻辑分析仪缩写]有关的配置:

1、

2、

3、联机进入调试状态,进一步配置:

4、运行看结果:

结果出来了,比较直观,也具备较好的测量能力。比一般的示波器不会差。

二、使用调试工具自带的SWO功能做printf输出

我们在调试过程中往往需要做些printf输出,通常使用UART实现。顺便用下倒还好,不然得单独配置出UART,PC端需装应用软件和win驱动,还得辅以额外的硬件。

其实,我们很多时候可能通过SWO方式做输出就好,只要芯片和调试器支持。

SWO,serial wire output ,一种异步串行通信通道。目前基于Cortex M3,M4,M7内核芯片都支持。通过配置寄存器DBGMCU_CR里的TRACE_IOEN和TRACE_MODE来启用。当然用CUBEMX配置生成初始化代码就更简单了。像下面这样:

跟MDK有关的配置:

1、

2、进入调试状态,点击View/Serial Windows/Debug(printf)Viewer

3、用户代码里添加:

#include“stdio.h”

int fputc(int ch, FILE *f)

{

ITM_SendChar(ch);

return (ch);

}

4、运行看结果:

来源

【转】分享两个基于MDK IDE的调试输出技巧的更多相关文章

  1. [工具开发] 分享两个基于Heapster 和 Influxdb 的 Grafana 监控仪表盘模板

    Info Collector: Heapster - /heapster- --metric-resolution=30s- --sink=influxdb:http://influxdb.defau ...

  2. 分享两个实用的shell脚本

    各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本 一键部署shell脚本 由于个人部署,会习惯把jar放到lib目录下面,如果你没有这个习惯,可以适当做 ...

  3. 分享两个你可能不知道的Java小秘密

    引言 最近LZ的工作发生了重大变化,以后博文的更新速度可能会再度回温,希望猿友们可以继续关注. 近期LZ辞掉了项目经理的工作,不过并未离开公司,是转到了基础研发部做更基础的研发,为广大技术人员服务.这 ...

  4. 优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件

    欢迎来到优分享VR开源项目 优分享VR 开源中国Git地址: http://git.oschina.net/xumingwang/youkes_vr 优分享VR是 优分享安卓APP VR视频播放开源部 ...

  5. 基于MDK的ARM-GCC开发环境建立及新唐M0的HID类设备的C++开发

    一,下载安装测试arm-none-eabi-gcc编译工具链 1,查看arm-none-eabi-gcc编译工具版本        打开网页:https://sourcery.mentor.com/G ...

  6. 基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建

    基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...

  7. 分享两个提高效率的AndroidStudio小技巧

    这次分享两个 Android Studio 的小技巧,能够有效提高效率和减少犯错,尤其是在团队协作开发中. Getter 模板修改--自动处理 null 判断 格式化代码自动整理方法位置--广度 or ...

  8. DCOS实践分享(3):基于Mesos 和 Docker 企业级移动应用实践分享

    2016年1月24日 8:00—19:00 北京万豪酒店(东城区建国门南大街7号) @Container大会是由国内容器社区DockOne组织的专为一线开发者和运维工程师设计的顶级容器技术会议,会议强 ...

  9. DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路

    2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...

随机推荐

  1. ElasticSearch(简称ES)

    Windows下安装ElasticSearch   ElasticSearch(简称ES)是一个基于Lucene的分布式全文搜索服务器,和SQL Server的全文索引(Fulltext Index) ...

  2. 百度地图支持https

    百度地图SDK,  支持https <script src="http://api.map.baidu.com/api?v=3.0&ak=nbnttGGI6lilllgy2zn ...

  3. mac下的快捷键

    功能 快捷键 通用 打开新窗口 command + n 打开新标签 command + t 关闭标签 command + w 缩小 command - 放大 command + 全屏.取消全屏 com ...

  4. asp.net mvc Areas 母版页动态获取数据进行渲染

    经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要 进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢 这里描述 ...

  5. Laravel5 创建自定义门面(Facade)

    门面为应用服务容器中的绑定类提供了一个“静态”接口.Laravel 内置了很多门面,你可能在不知道的情况下正在使用它们.Laravel 的门面作为服务容器中底层类的“静态代理”,相比于传统静态方法,在 ...

  6. MyBatis全局配置文件的各项标签3

    mapper 将sql映射注册到全局配置中,这个我们在上一章已经使用过了, resource 这个属性是用来引用类路径下的sql映射文件 url 这个属性是用来引用网络路径或磁盘路径下的sql映射文件 ...

  7. RandomStringUtils

    System.out.println(RandomStringUtils.random(5));//随机多少个随机字符中文环境乱码 System.out.println(RandomStringUti ...

  8. 关于 ajax

    1.type 提交类型 get /post 2.async 默认true 异步 3.cache 默认 true 读取缓存 false不读取缓存  会在请求后面 添加一个时间戳 https://www. ...

  9. git(命令行常用炒作)

    Git常用操作 https://backlog.com/git-tutorial/cn/intro/intro1_1.html Git详解(思维导图) https://blog.csdn.net/hu ...

  10. vscode git设置

    vscode只能打开一下界面: 在setting.path增加git.path选项,再使用linux的方法配置路径,就是使用D:/../bin/git.exe而不是\\ 重启vscode,git设置即 ...