STM32在线调试方法

时间:2024-04-10 20:59:30

1. STM32的调试模式

     对于STM32的CPU,支持调试模式,即CPU可以被暂停,用户可以在CPU暂停后查看寄存器或变量的状态。

2. 在线调试工具

    由于版权问题,JLink调试工具渐渐淡出,现在大部分使用ST-Link,它与JTAG调试方式兼容,虽然JTAG要比ST-Link快,但是JTAG要用到多个引脚,ST-link只需要3根线。

3. 调试准备

    首先插上ST-Link后,需要正确安装驱动,然后在设备管理器可以看到ST-Link。驱动安装好后,需要设置IDE工具,在MDK的魔术棒即option for project中的Debug选项中,要选择ST-Link,然后点击setting,这个时候如果能看到ST-Link版本等信息,说明ST-Link没问题,这个时候,还需要选择ort为SW表示用st-link,频率选择4MHz。

    要在Utilities 选项卡里面设置下载时的目标编程器,直接勾选Use Debug Driver,选择ST_LINK V2.1 来给目标器件的FLASH
编程,

STM32在线调试方法

然后点击Settings,进入FLASH 算法设置,

STM32在线调试方法

 

这里MDK5 会根据新建工程时选择的目标器件,自动设置flash 算法。一般Programming Algorithm 里面默认会有相应处理器型号的 算法。另外,如果这里没有flash 算法,可以点击Add 按钮,自行添加即可。最后,选中Reset and Run 选项,以实现在编程后自动运行,如果在MDK软件包安装完后,没有正确安装了对应处理器的pack包,这里的Programming Algorithm中可能会找不到对应处理器型号。

    上述设置完后,确定后,选择run to main,这样调试模式开始后,就会跳到main函数,相应设置如下:

STM32在线调试方法

4. 开始调试

    一般IDE开发工具上都有start/stop调试按钮,点击后进入调试模式。

5. 基本调试选项

    复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代
码会重新从头开始执行。

   runSTM32在线调试方法. 它可以执行到断点处或者重新从上一次调试中开始。 进入调试模式后,可以进行断点调试,断点的作用是可以指定程序运行区间,方便查找问题,对于单任务来说,非常有用,但对于像Linux系统那样单线程调试就不是问题,关键是多线程比较麻烦,因此STM在上系统后的多任务和中断服务等调试才是重点。

    step inSTM32在线调试方法,如果选择step in,那么调试会进入到选中的函数中去(比如当前光标选中一个函数,如果选择step in,那么会进入到这个函数中调试,如果此函数中还有其他函数,并且任然使用step in,那么会继续进入另外函数)。

   step overSTM32在线调试方法,如果当前光标在一个函数中的某一行,这个时候选择step over,那么会一行一行地运行,哪怕某一行是函数,也是一行一行地运行。

   step out STM32在线调试方法, 当执行进一个函数后,函数里面是一个很大的for循环,如果这个时候还是用step over一行一行地执行,将执行很久,这个时候就可以选择step out,意思是执行完这个函数,并退出到函数外执行其他代码。

   执行到光标处STM32在线调试方法 , 执行到光标处,意思是当把光标移动到某个地方后,调试时选择执行到光标处,那么程序就会执行到光标那个地方。

   stop挂起STM32在线调试方法, 不同IDE图标不一样,当一个程序中有个无线循环,并且没有打断点,点击执行到断点后,会进入循环一直执行,这个时候如果我们选择了挂起,那么程序就会在这个循环中暂停。

   与断点相比,在实际问题出现后,我们看到设备故障现象发生后,马上点击挂起,我们就知道程序大致运行到哪里了。因此,这种调试是当不知道问题代码在哪时使用。