php和stm32,【STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)

第5章   STM32H7下载和调试方法(MDK5)

本章教程为大家介绍如何通过MDK5下载程序到芯片里面以及MDK5的调试和配置方法。

5.1 初学者重要提示

5.2 使用MDK调试和下载程序设置(JLINK)

5.3 使用MDK调试和下载程序设置(STLINK)

5.4 MDK调试容易崩溃的解决办法

5.5 MDK程序调试

5.6 总结

5.1   初学者重要提示

如果使用JLINK调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持。

如果使用STLINK调试下载STM32H7,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。

MDK曾发布的STM32F1,F407,F429和F7的所有调试方法的设置细节及其注意事项,同样适用于STM32H7:http://www.armbbs.cn/forum.php?mod=viewthread&tid=14896 。

MDK5调试过程中容易崩溃的问题,请看本章5.4小节,比较重要。

5.2   使用MDK调试和下载程序设置(JLINK)

调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持,JLINK的驱动安装等相关文件已经在本教程第2章的2.5章节有说明。

在上个章节里面,我们已经将Options对话框里面大部分设置选项都做了说明,本章节主要是调试下载的设置。

5.2.1      开发板和JLINK的接线图

开发板接上JLINK的效果图如下,JLINK端需要插入开发板赠送的JTAG转SWD转接板:

59b7aeb028db4bcc722aee95ebce5569.png

注意转接板不要插反了:

ef3b4ba9346b2af18f1aa30f80895196.png

5.2.2      设置Options里面的Debug选项

Debug选项主要用于调试设置。

aca267125bdade372299e77dc2d2d2e4.png

打开Settings设置选项,设置完毕后别忘了点击确定。

aa3de8bf331f3731221a2fcf5212e142.png

5.2.3      设置Options里面的Utilities选项

Utilities选项主要用于程序下载设置。

9586d7dda1136ca40976ef59a72671c3.png

5.2.4      程序下载

前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电,就可以下载了。点击这里就可以下载了:

be3c86bb24723aa89945a486b6561679.png

下载成功后可以看到开发板上的LED开始闪烁,MDK的也有信息展示:

60b426d042b31771008e62e792150534.png

5.3   使用MDK调试和下载程序设置(STLINK)

调试下载STM32H7,请将STLINK固件升级到最新版,关于固件升级和驱动安装等相关文件已经在本教程第2章的2.6章节有说明。

在上个章节里面,我们已经将Options对话框里面大部分设置选项都做了说明,本章节主要是调试下载的设置。

5.3.1      开发板和STLINK的接线图

开发板接上STLINK的效果图如下:

21dbc1c344a24bc8db940b2b2b83696e.png

如果是下面这种STLINK,需要接上转接板:

1251e8f355028811f9c67334433bd923.png

b41909c2b3086e8c3439ff6e109aa225.png

5.3.2      设置Options里面的Debug选项

Debug选项主要用于调试设置:

b5f6dfe64b25b1dca2f40e8913e1816c.png

打开Settings设置选项,设置完毕后别忘了点击确定。

e49224569df8631b81bb9e67d1191c3c.png

5.3.3      设置Options里面的Utilities选项

Utilities选项主要用于程序下载设置。

a6c682fc30d127e2b97bd44f91f77ac2.png

5.3.4      程序下载

前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电就可以下载了。点击这里即可:

7aa71399d19fa174d9df58457eecbc16.png

下载成功后可以看到开发板上的LED开始闪烁,MDK的也有信息展示:

dc84f522b6c90767c981f795914fdd1a.png

5.4   MDK调试容易崩溃的解决办法

进入到MDK5.2X后,MDK调试的时候很容易崩溃,出现下面这个错误

dcec39c4cde0ffe43e1136f8dd9d9285.png

出现这个错误的话,要注意下面两个问题:

如果出现这种情况的话,将工程放在桌面路径下,工程名不要有中文会好很多。路径深或者有中文,都会造成这种情况。

退出调试的时候,如果使用断点了,务必清除所有断点,再退出,否则也会造成这种情况。

5.5   MDK程序调试

JLINK或者STLINK设置完毕后,调试是一样的。

5.5.1      全速运行和单步调试

点击如下按钮可以进入调试状态:

14d72009560c8af3e29eaa05878c2f2f.png

进入调试状态后的效果如下:

62577d29cdd24daafe51d33f6f7928f1.png

首先要认识下这7个图标的含义:

ce4052c5a27d402cadc15ad458472959.png

第1个图标是复位调试。

第2个图标是全速运行。

第3个图标是进入全速运行状态后,通过这个图标可以停止全速运行。

第4个图标是Step(Step one line),单步调试,每次点击运行一行代码,所以只要有子函数就会进入。

第5个图标是Step Over(Step over the current line),每次点击以函数为单位运行,不会进入函数内部。

第6个图标是Step out(Step out of the current line),点击后退出当前运行的函数,执行下一个函数。

第7个图标是Run to Cursor Line(Run to the current cursor line),直接运行到用户设置的行,设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头

cdcb7d5040cb54694ff181718c3cdd7f.png

然后点击此图标即可,可以看到前面多了一个黄色的小箭头,说明已经运行到此行

792c1c742058b80c760903b8ad83c0f4.png

前面几个图标的功能,大家多测试几次就熟练了。

5.5.2      外设寄存器的查看

要查看的外设寄存器内容在这个菜单里面:

71b15a5b2566b1c4ee248dc08afda77c.png

如果要查看内核外设寄存器,在这里:

e3da2c8fcd8ee3930569e8768a121221.png

5.5.3      全局变量的查看

针对全局变量,MDK专门提供了Watch1和Watch2两个窗口,每个窗口可以添加很多变量。调试过程中,这些窗口里面添加的变量是会更新的。

35e14409ef1474ce67250f494239dcc4.png

也可以从菜单View ->Watch Windows进行添加。比如下面添加一个简单的全局计数变量。

1cfd582c987e59024220c7716080c87b.png

5.5.4      局部变量的查看

针对局部变量,MDK专门提供了一个栈窗口,用于查看函数中各种局部变量,这个不需要用户添加,MDK会自动添加。

4b79d473e3ce66cc333c1bed2aaa4291.png

也可以从菜单View ->Call Stack Window进行添加。局部变量需要进入到那个函数里面才可以查看,这点要特别注意,因为局部变量是来自栈空间的,进入函数申请占空间,退出函数后,栈空间就会被释放掉。比如main函数里面一个num局部变量:

c5a43f3639694bbb5ee48afa3f0ddb12.png

5.5.5      Flash区或者RAM区的查看

如果要查看Flash区或者RAM区的内容,MDK提供了4个Memory窗口。

9d9cf2c4c59bf7597e7020ddd7295b93.png

也可以从菜单View ->Memory Windows进行添加。比如要查看0x0800 0000地址开始的内容,直接输入即可,这个地址是STM32H7的Flash首地址:

66fa87a906c995608069edfbe35af9fd.png

5.5.6      断点调试

断点调试比较重要,进入调整状态后,如果大家想让程序在指定的位置停止运行,可以添加断点,通过这个小红点来添加。

79802d614204041ced1c1b3181d75fd2.png

比如想在84行添加断点。

b485a46eabcc520b6f34d28d8b5b4998.png

用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头:

14fd2f96d541790b9a04727f4353fe24.png

然后点击那个小红点,可以看到已经添加上:

540cea062224aaf31e15de3846939144.png

然后点击全速运行,如果程序有执行到这个地方,就会停在这里。可以看到黄色小箭头也显示在左侧了,说明程序执行这个地方了:

26fc3b5ce66b98e8465113c515ef8006.png

正常情况下,断点可以加到任何程序代码可以执行到的地方。另外注意,退出调试前,点击这个按钮取消所有断点,防止MDK调试期间崩溃:

94b50d879cc14767d255224cbf41eb57.png

5.5.7      寄存器,全局变量和局部变量的动态更新

MDK有个周期性更新选项,如果大家要周期性的观察一些寄存器、全局变量的更新、需要把菜单View -> Periodic Window Update选上。

20aca4014dc4519ebf2e5bc1b6ff68c4.png

这个周期不能设置,大概0.5s左右更新一次。

5.6   总结

对于初学者来说,务必要实际动手操作一遍。特别是调试方法,要熟练掌握,因为以后工程代码调试时,用到的最多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值