历史上的今天
返回首页

历史上的今天

今天是:2024年08月27日(星期二)

正在发生

2019年08月27日 | 【STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)

2019-08-27 来源:eefocus

5.1   初学者重要提示


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

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


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


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

JLINK无法下载解决思路以及常见问题整理,适用于其它LINK:http://forum.armfly.com/forum.php?mod=viewthread&tid=21708 。


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

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


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


5.2.1      开发板和JLINK的接线图

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


注意转接板不要插反了:


5.2.2      设置Options里面的Debug选项

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


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


5.2.3      设置Options里面的Utilities选项

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

5.2.4      程序下载

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

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


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

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


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


5.3.1      开发板和STLINK的接线图

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

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


 

5.3.2      设置Options里面的Debug选项

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


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



5.3.3      设置Options里面的Utilities选项

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


5.3.4      程序下载

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


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


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

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


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


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

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

 


针对这个问题,KEIL官方也有说明:http://www.keil.com/support/docs/4036.htm 。


5.5   MDK程序调试

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


5.5.1      全速运行和单步调试

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


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


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



第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),直接运行到用户设置的行,设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头


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


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


5.5.2      外设寄存器的查看

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


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


5.5.3      全局变量的查看

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


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


5.5.4      局部变量的查看

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


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


5.5.5      Flash区或者RAM区的查看

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

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

5.5.6      断点调试

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

比如想在84行添加断点。


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


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

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



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



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

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

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


5.6   总结

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


推荐阅读

史海拾趣

GardTec Inc公司的发展小趣事

背景:GardTec始终致力于产品创新和技术研发,不断推出符合市场需求的新产品。

发展:公司积极与风扇制造商密切合作,联合推出了一系列具有创新性的风扇配件产品。同时,GardTec还投入大量资源用于研发工作,不断提升产品的技术含量和附加值。

影响:通过持续的创新与合作,GardTec不仅巩固了其在风扇配件市场的领先地位,还推动了整个行业的技术进步和产业升级。

CAMDENBOSS公司的发展小趣事

在电子行业的早期,CAMDENBOSS公司以其对技术的深入研究和不断创新而崭露头角。公司研发团队通过不懈努力,成功开发出一款具有革命性的连接器产品,该产品在信号传输效率和稳定性上取得了显著突破。这一技术突破不仅为公司赢得了市场的广泛认可,也奠定了其在电子连接器领域的领先地位。

Deutsch公司的发展小趣事

Deutsch公司自创立之初,就注重技术创新和产品研发。在早期阶段,公司成功开发出一款具有突破性的电子元件,这款元件以其高性能和低成本迅速在市场上获得了认可。随着技术的不断进步,Deutsch公司不断推出创新产品,满足日益增长的市场需求。这些技术突破和产品创新不仅提升了公司的竞争力,也推动了整个电子行业的发展。

BETA Transformer Technology Corp公司的发展小趣事

随着电子行业的快速发展和变革,BETA Transformer Technology Corp公司面临着前所未有的挑战。为了应对这些挑战,公司不断加大研发投入,加强技术创新,推出了一系列符合市场需求的新产品。同时,BETA公司还积极调整生产结构,优化供应链管理,降低成本,提高产品质量。这些举措使得BETA公司在激烈的市场竞争中保持了领先地位。

昆泰芯微电子(CONNTEK)公司的发展小趣事

随着物联网技术的快速发展,昆泰芯微电子紧跟时代步伐,深度布局物联网应用领域。公司专注于面向物联网应用的传感器芯片研发、生产和销售,致力于成为传感器信号链及物联网芯片的行业领导者。在消费电子、智能制造、智能交通、智能家居以及新能源汽车等多个领域,昆泰芯微电子的产品得到了广泛应用,为这些领域的发展提供了强有力的技术支持。

Dongguan Jingyue Electronics Co Ltd公司的发展小趣事

Dongguan Jingyue Electronics Co Ltd始终将社会责任和可持续发展作为公司发展的重要组成部分。公司积极参与公益事业,关注环境保护和员工福利。通过捐赠教育基金、支持环保项目、改善员工待遇等方式,公司履行了社会责任,也为公司的可持续发展奠定了基础。

请注意,以上故事均为虚构内容,仅用于展示电子行业公司可能的发展故事框架。

问答坊 | AI 解惑

MFC下面怎么用Sql Server CE?

一切完好,在.NET下面也可以用System.Data.SqlServerce下面的提供的函数成功的对数据库进行操作.包括RDA和合并复制等. 但是我在想如果不用.Net而用MFC使用系统API如果实现对Sql server ce数据操作包括RDA和合并复制之类的.有不有达人相告.感激不尽.…

查看全部问答>

windows mobile 透明窗口

windows mobile下 如何实现窗口的透明效果?指的是局部透明,及窗体完全透明,其上面的控件不透明,SetLayeredWindow不支持 查了好多资料,发现貌似与AlphaBlend有关,请高手指点!最好有例子,谢谢…

查看全部问答>

智能绿色照明系统的设计及实现

智能绿色照明系统的设计及实现…

查看全部问答>

请各位指导下小弟

最近再做一个事情 就是把角度化为0到 2π 之前 比如一个角度是8 π 也就是4 π + 2π 我要把前面的4 π 去掉 也就是把 2nπ 去掉 用FPGA实现 怎么去做啊 谢谢指导一下…

查看全部问答>

stm8的选项字节软件里怎么配置

                                 我也想问你这个问题…

查看全部问答>

CortexM0_LPC1100_GPIO示例代码程序下载

CortexM0_LPC1100_GPIO示例代码程序下载…

查看全部问答>

大学生用51单片机做的东西

昨天元宵节,单位提前两个小时放假,回家的时候路过学校,顺便去看了一下上学时教单片机的老师。老师给我看了一下我们当初建的电子实验室现在的成果,给大家分享一下!智能蔽障机器人小车 51板扩展制作的智能小车,可以实现单片机控制小车前后左右 ...…

查看全部问答>

如何实现12864显示430f149单片机AD采样的波形

如题,希望大家给点意见,或者提供一些程序,谢谢…

查看全部问答>

本科G组的

本帖最后由 paulhyde 于 2014-9-15 03:13 编辑 有么有什么群有老师或大神指导的 给个号加下    …

查看全部问答>

HTC Desire S G12拆机

无聊的我,又出现了~~~~ 这次是HTC Desire S,几年前的买的手机,不慎被我把屏幕摔碎了,也没打算修了,直接拆了吧。 先来一张正面大合照 这次拆的时候没有照了,都是拆好以后照的,大家见谅啊。 每次拆的时候我都会,把每个部件收好 ...…

查看全部问答>