发布网友 发布时间:1天前
共1个回答
热心网友 时间:4分钟前
在线调试是解决复杂代码工程中bug的有力工具。使用JLINK、ULINK或STLINK等调试工具,实时跟踪程序执行,定位问题所在。以潘多拉开发板上的ST LINK V2.1为例,介绍如何在线调试STM32L475。
ST LINK支持JTAG和SWD两种通信方式,其中SWD方式占用的IO口较少(仅2个),通常选择SWD进行调试。
在MDK IDE中编译工程后,点击“开始/停止仿真”按钮启动仿真。如果代码未更新,会先下载代码再仿真。注意,确保开发板的B0脚连接GND,否则无法运行下载的代码。
MDK多出Debug工具条,提供了复位、执行到断点处、停止运行、执行进去等按钮功能。
复位按钮相当于硬复位,使程序从头开始执行;执行到断点处快速跳至指定位置;停止运行按钮使程序停止,进入单步调试;执行进去按钮单步执行至函数内部;执行过去按钮在函数间单步跳过;执行出去按钮直接执行完函数余下部分,跳出函数。
执行到光标处按钮迅速使程序运行至光标位置,方便快速查看程序状态。
汇编窗口查看汇编代码,方便深入理解程序;堆栈局部变量窗口显示当前函数局部变量及其值;观察窗口输入变量查看其值;内存查看窗口输入地址观察内存变化;串口打印窗口显示从串口输出内容;逻辑分析窗口观察IO口电平变化。
系统查看窗口提供各种外设寄存器查看,方便检查设置。串口打印和逻辑分析窗口仅在软件仿真时可用。调试过程中,合理使用这些工具,可以高效定位并解决问题。
以堆栈局部变量窗口为例,放置断点后,点击执行到断点处按钮,打开系统查看窗口,查看USART1配置。通过比较不同状态下的寄存器设置,判断代码逻辑是否正确。
调试过程中,使用串口调试助手设置波特率,观察变量值变化,确保代码在硬件上正确执行。
在线调试是调试复杂代码工程的重要手段,对于STM32L475硬件调试同样适用,掌握此方法对于排错和代码编写都大有裨益。