【STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980
第7章 STM32H7下载和调试方法(IAR8)
本章教程为大家介绍如何创建IAR8工程,配置方法以及经常用到的一些配置项。
7.1 初学者重要提示
7.2 使用IAR调试和下载程序设置(JLINK)
7.3 使用IAR调试和下载程序设置(STLINK)
7.4 IAR程序调试
7.5 总结
7.1 初学者重要提示
- 如果使用JLINK调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持。
- 如果使用STLINK调试下载STM32H7,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。
- JLINK无法下载解决思路以及常见问题整理,适用于其它LINK: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 总结
对于初学者来说,务必要实际动手操作一遍。特别是调试方法,要熟练掌握,因为以后工程代码调试时,用到的最多。
【STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)的更多相关文章
- 【STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第5章 STM32H7下载和调试方法(MDK5) 本 ...
- 微信小程序开发系列教程三:微信小程序的调试方法
微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 这个教程的前两篇文章,介绍了如何用下图所示的微信开发者工具自动生成一个Hel ...
- 【STM32H7教程】第13章 STM32H7启动过程详解
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第13章 STM32H7启动过程详解 本章教 ...
- 【STM32H7教程】第12章 STM32H7的HAL库框架设计学习
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第12章 STM32H7的HAL库框架设计学 ...
- 【STM32H7教程】第11章 STM32H7移植SEGGER的硬件异常分析
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第11章 STM32H7移植SEGGER的硬 ...
- 【STM32H7教程】第10章 STM32H7的FLASH,RAM和栈使用情况(map和htm文件)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第10章 STM32H7的FLASH,RAM ...
- 【STM32H7教程】第8章 STM32H7的终极调试组件Event Recorder
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第8章 STM32H7的终极调试组件Event Re ...
- 【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第9章 STM32H7重要知识点数据类型,变量和堆栈 ...
- 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第6章 STM32H7工程模板建立(IAR8) 本章 ...
随机推荐
- 关于Android适配华为等带有底部虚拟按键的解决方案
http://blog.csdn.NET/a91694451/article/details/50469857 最近公司的项目里遇到了一个问题,就是最后适配的时候时候同事的华为手机时,由于底部带有虚拟 ...
- java.lang.SecurityException: Can't make field constructor accessible
原本使用GsonConvertor,在Android版本5.1.1上没有任何问题,结果切换到版本6.0.1上,出现以下所示问题: java.lang.IllegalArgumentException: ...
- Java的精确整数计算-Bigdecimal学习总结和工具类
随笔:随着最近工作需要,回首需要涉及到一些精确的数据计算,就需要用到Bigdecimal,索性就趁着闲暇之余整理收集一下关于Bigdecimal的使用方法,由于时间的原因,整理的并不是特别详细,但相信 ...
- margin-right没有效果的问题
margin-right其实有效果的,只是在默认即标准流的情况的下显示不出来效果.如果脱离标准流呢?想到这个,就立马在css文件中加了一个:float:right;然后在测试的时候就能看到margin ...
- 初学JSP
一. 基本了解 JSP是应用最广泛的表现层技术,它和Servlet是Java EE的两个基本成员.JSP和Servlet本质是一样的,因为JSP最终编译成ServLet才能运行. 1.1 we ...
- Python_struct模块操作二进制文件
''' 使用struct模块写入二进制文件 ''' import struct n=130000000 x=96.45 b=True s='a1@中国' sn=struct.pack('if?',n, ...
- 5月11日——IOS下如何检测用户是否安装微信
执行如下代码: var WXApi = plus.ios.import("WXApi"); var isWXInstalled = WXApi.isWXAppInsta ...
- 读《图解HTTP》有感-(返回结果的HTTP状态码)
写在前面 HTTP状态码是由服务端产生,用于告诉客户端,服务端处理结果的编码 正文 1.状态码的作用是什么?具有什么特征? 状态码的作用是当客户端向服务器发送请求时,描述服务器的响应结果(如:服务器正 ...
- JAVA学习资源分享
JAVA学习资源分享 最高端的JAVA架构师资源(来自龙果学院 价值¥1399元).JAVA互联网分布式架构(龙果学院 价值¥899元).Spring Boot(2017年最新 包括源码原理分析) + ...
- web优化(一)
今天读完了<高性能网站建设进阶指南>,记得博客园的某位前辈说,关于前端方面的书,带指南两个字的一般都是比较牛逼的,上一本看到的好书是<javascript权威指南>是淘宝前段团 ...