调试经验
文章平均质量分 65
主要分享一些单片机相关的软硬件调试经验
天外飞仙CUG
本科、硕士就读于中国地质大学(武汉),目前从事嵌入式软硬件方面的工作。公众号:嵌入式技术开发。欢迎关注。
展开
-
STM32串口溢出中断问题
之前调试程序,遇到了串口溢出中断的问题,导致主程序被卡死。这里总结分享一下经验,希望对读者有用。对于STM32F103系列单片机,使能接收中断后,溢出中断就会自动被使能。那什么时候会发生溢出中断呢?在RXNE=1 的的条件下(也就是上次数据还没有读走),串口接收寄存器又接收好了一个字节的数据并准备往RDR 寄存器去转移的时候,会产生溢出中断。产生溢出中断典型的情况有: 1.串口接收中断被更高优先级的中断打断,且打断时间比较长。 2.擦写单片机内部flash时...原创 2021-01-22 16:04:53 · 6641 阅读 · 5 评论 -
STM32CubeMX串口中断偶校验问题
STM32CubeMX是一款非常方便的工具软件。但是在使用时也会存在一些问题。比如,最近调试昆仑通态触摸屏与单片机的串口通讯,波特率为9600,数据位8位,偶校验,1位停止位。...原创 2020-12-24 21:11:15 · 605 阅读 · 0 评论 -
串口printf和USB虚拟串口printf
C语言中printf是个功能强大的函数,可以打印各种格式的数据。在单片机程序调试时,也经常需要将数据打印出来查看。之前介绍过通过Jlink的RTT功能进行打印《Jlink使用技巧之RTT和...原创 2021-02-21 21:10:40 · 1548 阅读 · 1 评论 -
Jlink使用技巧之RTT和J-Scope
在调试单片机程序时,串口打印是一种非常常用的方式。有时候,硬件上没有预留串口时,就需要采用其它方式进行打印调试。1.Jlink SEGGER RTTJlink SEGGER RTT是一种非常好用的方式,只需要通过Jlink的SWD或者JTAG接口即可实现类似printf的功能,使用方法也很简单。首先从Jlink官网上下载RTT代码,或者在MDK安装目录也可以找到。将这四个文件添加到自己工程中去,并且在主程序工程中包含SEGGER_RTT.h文件。使用时先初始化:SEGGER_R...原创 2021-02-09 09:43:58 · 3110 阅读 · 0 评论 -
STM32软件调用系统BootLoader
前言 大家知道,STM32单片机有一块系统存储器(System Memory),存储的是芯片自带的BootLoader启动程序,可通过串口或USB口等来升级程序。但是要运行自带的Boot...原创 2021-04-15 21:03:35 · 2462 阅读 · 4 评论 -
Keil总是未响应?
做单片机开发,很多都会用Keil做编译器。软件功能很强大,但经常会遇到莫名其妙的未响应、卡死,尤其在退出调试模式时,非常频繁。这时就不得不打开任务管理器、强制关掉软...原创 2021-05-18 15:27:57 · 4918 阅读 · 0 评论 -
串口波形显示软件SerialChart的使用
之前的文章中介绍过J-Scope和SerialView软件用于程序调试,查看波形的方法。J-Scope必须依赖于Jlink才能使用,而SerialView在使用过程中发现经常有数据错误的情...原创 2021-02-25 15:40:06 · 5008 阅读 · 4 评论 -
VCC和GND短路,怎么找问题?
在调试电路时,可能经常会遇到VCC和GND短路的情况。板子上的VCC和GND点太多了,新手可能觉得不知道从哪找,下面就介绍几种方法,供大家参考。1.目测最简单的方法,先用...原创 2021-06-04 21:09:45 · 2591 阅读 · 0 评论 -
一种适用于小容量MCU的轻量级sprintf函数
sprintf是一个非常好用的格式打印函数,可以将各种类型的数值或者字符打印到字符串中,方便数据传输。但是对于嵌入式系统来说,特别是小容量的MCU,该函数编译后占用空间较大,使用受限。今天来介绍一个适用于小容量MCU的sprintf函数:mini-printf。使用该函数只需将两个文件添加到工程中,并包含头文件#include "mini-printf.h"文件链接:ht...原创 2022-03-30 12:00:00 · 1063 阅读 · 4 评论 -
ITM机制-不用串口也能printf
在PC上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用这些函数,我们可以很方便的调试程序。printf的方式有很多种,一般情况下,我们可以使用串口或其它接口重定向printf。参见之前的文章《串口printf和USB虚拟串口printf》。也可以使用Jlink等调试工具printf《...原创 2022-04-09 08:00:00 · 1827 阅读 · 0 评论 -
怎样测量单片机程序的运行时间?
有时我们需要知道自己的单片机程序需要花费多长时间,delay延时的精确时间等。今天来介绍几种测量程序运行时间的方法。1.单片机内部定时器使用单片机内部定时器,在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。如下:为了测量的准确性,要进行多次测量,并进行平均取值。另外,如果待测程序耗时较长,要考虑定时器的溢出。2.借助外部工具如果你的程序没有多余的定时器可用,那...原创 2022-04-07 08:00:00 · 3431 阅读 · 0 评论 -
Keil调试时设置断点的高级用法
在线调试程序时,打断点是非常有效的一种方式,配合单步调试,可以快速定位问题。但是有时候,手动打断点用起来不是那么方便。比如想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。1.设置断点的运行次数。以下面程序为...原创 2022-04-13 08:00:00 · 9427 阅读 · 6 评论