历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-08-27 来源:eefocus

7.1   初学者重要提示


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


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

  

http://forum.armfly.com/forum.php?mod=viewthread&tid=21708 。


7.2   使用IAR调试和下载程序设置(JLINK)


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


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


7.2.1  开发板和JLINK的接线图


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


注意转接板不要插反了:


7.2.2      设置Options里面的Degubber选项

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

设置完毕后,别忘了点击OK。


7.2.3      设置Options里面的JLINK选项

注意,在Debugger选择里面选择了JLINK后,才可以设置此选项。Setup部分使用默认配置即可,无需修改:


Connection部分要选择SWD接口:


设置完毕后别忘了点击OK。


7.2.4      程序下载

前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电,就可以下载了。菜单Project->download->download Active Application:


下载成功后将开发板重新上电,可以看到开发板上的LED开始闪烁,IAR的Debug log窗口也有信息展示:


7.3   使用IAR调试和下载程序设置(STLINK)

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


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


7.3.1      开发板和STLINK的接线图

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



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


7.3.2      设置Options里面的Debug选项

Debug选项主要用调试:


7.3.3      设置Options里面的STLINK选项

注意,在Debugger选择里面选择了STLINK后,才可以设置此选项。Setup部分选择SWD接口,其它默认即可:


7.3.4      程序下载

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


下载成功后将开发板重新上电,可以看到开发板上的LED开始闪烁,IAR的Debug log窗口也有信息展示。


7.4   IAR程序调试

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


7.4.1      全速运行和单步调试

点击如下按钮可以进入调试状态(下载程序到芯片同时开启调试):


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


首先要认识下这11个图标的含义(进入调试状态后,鼠标放在这几个图标上会有提示):

  第1个图标是重新编译例程并进入调试状态。

  第2个图标是重新进入调试状态。

  第3个图标是停止调试。

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

  第5个图标是Step Into(Step into the current step point),单步调试,每次点击运行一行代码,所以只要有子函数就会进入。

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

  第7个图标是Next Statement(Step to the next statement),进入下一个状态,跟第4个图标功能差不多。

  第8个图标是Run to Cursor(Execute to the current cursor position),直接运行到用户设置的行,设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有光标即可(注意,程序不能倒着执行,也就是能往回设置)


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


  第9个图标是全速运行。

  第10个图标是用于暂停全速运行。

  第11个图标是复位调试,重新回到main函数开始执行。

 


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


7.4.2      外设寄存器的查看

初次使用IAR8的话,容易出现找不到在哪里查看寄存器的问题,首先需要点击这里View ->Register


->Register 1(共提供了四个register窗口,打开那个都行,要查看多个外设时,可以同时打开多个窗口查看):


给出的都是CPU寄存器:


这个并不是我们想要的,还有继续下一步,在红色的方框区域右击:


比如查看DAC:


7.4.3      全局变量的查看

针对全局变量,IAR提供了专门提供了Watch1, Watch2,Watch3和Watch4窗口,每个窗口可以添加很多变量。从菜单View ->Watch进行添加:


比如定义了一个全局的32位变量count,用户可以直接在Watch1窗口里面输入此变量:



也可以在源文件里面,鼠标右击此变量进行添加。调试过程中,这些窗口里面添加的变量是会更新的。但是全速运行状态,这些变量就不会更新,为了解决这个问题,IAR有一个Live Watch可以在全速运行状态查看变化:


用户可以直接在Live Watch窗口里面输入变量查看,如果程序里面做了一个简单的加法计数,就可以在全速调试状态查看此变量的动态变化:


7.4.4      局部变量的查看

针对局部变量,IAR专门提供了一个栈窗口,用于查看函数中各种局部变量,这个不需要用户添加,IAR会自动添加。从菜单View ->Locals进行添加窗口:

局部变量需要进入到那个函数里面才可以查看,这点要特别注意,因为局部变量是来自栈空间的,进入函数申请栈空间,函数退出后,栈空间就会被释放掉。比如main函数里面一个num局部变量

7.4.5      Flash区或者RAM区的查看

如果要查看Flash区或者RAM区的内容,IAR提供了4个Memory窗口。从菜单View ->Memory进行添加:


比如要查看0x2000 0000地址开始的内容,直接输入即可,这个地址是STM32H7的DTCM首地址

7.4.6      断点调试

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


比如想在79行添加断点。



用户仅需在那行使用鼠标左键点击一下,然后单击断点图标即可,断点设置好的效果如下:


然后点击全速运行,如果程序有执行到这个地方,就会停在这里。可以看到绿色小箭头也显示在左侧了,说明程序执行到这个地方了(此时还没有执行该语句):


7.4.7      动态更新频率设置

IAR有个周期性更新频率设置选项,菜单Tools->Options:

单位都是毫秒,最小1ms:


7.5   总结

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


推荐阅读

史海拾趣

CHIMEI(奇美)公司的发展小趣事

随着电子行业的快速发展,市场竞争也日益激烈。奇美公司深知创新是企业发展的核心动力,因此不断加大研发投入,推动技术创新和产品升级。公司研发团队积极探索新技术、新工艺和新材料的应用,推出了一系列具有创新性和竞争力的产品。这些产品不仅满足了客户的需求,还为公司开拓了新的市场领域。

C-TON Industries公司的发展小趣事

在电子行业的快速发展中,市场变革是常态。为了应对这些变革,C-TON始终坚持创新的精神。公司不断投入研发资金,开发新产品、新技术,以适应市场的变化。同时,C-TON还密切关注行业发展趋势,及时调整战略方向,确保自己始终走在行业前列。这种持续创新的态度使得C-TON能够在激烈的市场竞争中保持领先地位,实现持续发展。

以上五个故事分别围绕技术创新、战略合作、品质管理、全球化布局和持续创新等方面,展现了C-TON Industries公司在电子行业中发展起来的历程。这些故事虽然基于虚构,但反映了电子行业发展的一般规律和成功企业的共同特点。希望它们能够为您提供一些启发和参考。

Dino-Lite公司的发展小趣事

Dino-Lite公司自创立之初,就专注于数字显微镜技术的研发与创新。公司研发团队不断探索新技术,将传统显微镜与现代数字技术相结合,成功推出了一系列高性能、易用性强的Dino-Lite数字显微镜产品。这些产品以其高清画质、便捷操作和广泛适用性,迅速赢得了市场的认可。

随着技术的不断进步,Dino-Lite公司不断推出新产品,满足了不同行业对数字显微镜的需求。例如,公司针对医疗领域推出了高分辨率、低光环境下的专业显微镜,为医疗诊断和治疗提供了有力支持;同时,针对教育行业推出了性价比高的入门级产品,让更多的学生和老师能够接触和使用到先进的显微镜技术。

Gold Peak Group公司的发展小趣事
在控制电路周围设置必要的安全防护措施,如防护罩、警示标志等,防止人员误操作或触电事故的发生。
Hosiden Corporation公司的发展小趣事

在追求经济效益的同时,Hosiden也始终关注可持续发展和社会责任。公司致力于通过技术创新和绿色生产等方式,降低对环境的影响并促进资源的循环利用。此外,Hosiden还积极参与社会公益事业和慈善活动,为社会的发展和进步贡献了自己的力量。这些举措不仅提升了公司的社会形象和品牌价值,也为其在电子行业的长远发展奠定了坚实基础。

Anderson Power公司的发展小趣事

在追求经济效益的同时,Hosiden也始终关注可持续发展和社会责任。公司致力于通过技术创新和绿色生产等方式,降低对环境的影响并促进资源的循环利用。此外,Hosiden还积极参与社会公益事业和慈善活动,为社会的发展和进步贡献了自己的力量。这些举措不仅提升了公司的社会形象和品牌价值,也为其在电子行业的长远发展奠定了坚实基础。

问答坊 | AI 解惑

电子电路设计与实践

初学者可以拿去参考参考…

查看全部问答>

protelDXP2004原理图修改元件参数有什么快速方法

protelDXP2004原理图修改元件参数有什么快速方法呀。一个一个改好麻烦呀。:L…

查看全部问答>

基于MSP430 单片机高精度温度测量的补偿方法

用MSP430P315 单片机的A/D 转换器,实现阻性温度传感器的电阻检测;用查表和线性插值结合的方法,简化标度变换的算法结构。对电池电压的降低进行补偿的同时分析补偿电阻的精度对温度检测的影响。 …

查看全部问答>

软件工程师的职位规划

/************************************************ *技术直接转销售还是先转技术支持再转销售好呢? ************************************************/ 我是09年毕业的,毕业的时候,是在一家医疗器材公司工作。 最近换了一家公司,是搞 ...…

查看全部问答>

请教一点关于并口驱动开发的问题

老师让做一个dsp和pc通过并口epp通信的东西,在xp下对并口操作是不是要写个驱动?老板让我用WinDriver,我想问问关于并口开发要怎样调试呢?以前没有做过关于并口通信东西,所以想请问各位老大,希望能给指点一下…

查看全部问答>

请问一下

我的程序 无法进入中断程序 可能是什么原因? 我是用的下降沿有效啊…

查看全部问答>

请教evc中如何快速移动图片

在Wince中添加一个较大的位图,设想有一个相对较小的取景框,当这个框快速移动时,我想显示屏幕上位图移动的动画效果。我在evc中代码如下:          CBitmap m_bitmap;         BITMAP bm; ...…

查看全部问答>

帮我下一个外文文献

Kaiser, J.F., Nonrecursive digital filter design using the I0-sinh window function, Proceedings of the 1974 IEEE International Symposium on Circuits and Systems (1974) 请发送邮件到donghongyong@live.cn …

查看全部问答>

uboot怎样向kenerl传递一个物理地址

现在uboot中有个物理需要传到kernel中! 我该在uboot怎样做?请各位大虾指点下!!谢谢…

查看全部问答>

(北京)迎接Linux时代的到来

4月21日(周六)东方标准特邀请嵌入式软件仿真开源(SkyEye)项目核心成员、AKA 嵌入式小组成员康烁,为大家做《利用SkyEye进行操作系统分析及SkyEye的最新进展》的讲座。 康烁--作为自由软件爱好者,精通嵌入式系统移植,驱动开发,多年嵌入式开发 ...…

查看全部问答>