这篇文章介绍一下单片机里非常重要的debug,使用的硬件是J-Link。在工程上,使用J-Link来Debug将会让寻找bug的效率事半功倍,J-Link等仿真器是一个嵌入式工程师必不可少的工具,就像是电工不能没有电烙铁。而大多数新手在入门的时候都会忽略debug的训练,这篇文章可以让你五分钟轻松入门debug功能。

  下图是连线规则,VCC连接3.3V,GND连接GND,SWCLK和SWDIO连接单片机上的CLK和DIO端口,具体是哪一个IO口还要阅读一下数据手册。

stm32cubem软件仿真_stm32

 然后如果你想使用J-Link来Debug,首先你要做的就是在网上下载相应的J-Link驱动,具体链接大家可以上网搜索一下,我这里就不放下载链接了。

 我们打开熟悉的keil5,然后点击Option for Target。

stm32cubem软件仿真_stm32cubem软件仿真_02

  点击Debug这个选项,然后我们可以看到界面如下,然后右边的框框那里选择J-Link,点击setting,看一下电脑检测到你的J-Link了没有。

stm32cubem软件仿真_arm_03

 具体界面如下,如果你的SW Device没有被检测到,就不会有以下的界面,然后其他的数值按照默认的来就好了。

stm32cubem软件仿真_单片机_04

  然后bulid一下你自己的程序,他才会生成相应的代码。一定要记住每次写完代码后要build一下,不然烧录的代码是你修改之前的代码。 

stm32cubem软件仿真_stm32cubem软件仿真_05

   点击右上方start debug,进入debug模式。

stm32cubem软件仿真_stm32cubem软件仿真_06

 进入之后就是下面的界面,进入之后代码是不会运行的,单片机是处于停止状态的。

stm32cubem软件仿真_stm32_07

   然后介绍一下一些边栏的作用,左边第一个RST按钮是RESET的按钮,可以让单片机复位。第二个是RUN,让单片机程序运行。第三个是STOP,在单片机运行的时候如果我们发现程序不对,我们可以及时按下STOP来停止程序的运行。第四个之后的按钮就分别是一步步运行,跳过,跳出,跳到指定程序。

  看到右上方start debug的右边的按钮,第一个是比较实用的添加断点,何为断点呢,就是程序如果运行到断点处,这个程序就会停止STOP。但是断点的个数是有数量限制的,增添太多断点程序或许会卡死。剩余的几个按钮也是关于断点设置的,大家感兴趣可以把鼠标放在上面看看英文显示,就明白它们的作用了。

stm32cubem软件仿真_单片机_08

  左边栏显示的黄色箭头和蓝色箭头又代表的什么意思呢?黄色箭头代表的是你STOP程序后,程序运行停在了哪一行代码之上,而蓝色箭头代表着你选择的代码行。我们可以在中断程序里面设置断点,然后运行根据黄色的箭头来判断我们的程序是否进入了中断程序,然后来debug中断程序的基础配置和逻辑运行。

stm32cubem软件仿真_嵌入式硬件_09

 介绍一下右边watch栏的作用,这些都是程序里相关的变量值,我们可以根据watch来观察我们程序在运行时各个变量的具体变化趋势。比如说有时候usart乱码了,但你又不知道usart乱码成了什么数据,你就可以设置一个变量Temp接受usart发送过来的数据然后把它放在watch栏里观察它的值。 然后这个变量要设置为全局变量,因为watch只能观察全局变量,如果是函数里的相应变量,是无法加入到watch里的。

stm32cubem软件仿真_arm_10

  

 最后我介绍一下如何将一个变量加入到watch栏里面,我们先右击相应变量,然后点击add current to...,点击watch1或者watch2,然后你就可以在watch栏里看到相应变量的数值啦。  今天的教程就这些了,这些就是J-Link Debug的简单教程,如果能帮助到大家是我莫大的荣幸。