IAR教程之IAR下载和调试

IAR下载

下载器与单片机之间的接线有两种JTAG和SWD,SWD只须要四根线(GND、TCK、TMS、RST(可选)),通常使用SWD接线便可。web

  1. 硬件链接
  • 使用龙邱下载器的

龙邱核心板的下载接口丝印层都有一个白色凸口,对应龙邱下载器排线的凸口。svg

  • 使用其余下载器的

若是没有使用龙邱下载器,打开核心板原理图,找到下载口部分,接线对应便可:函数

单片机SWDIO(TMS)  -----  下载器SWDIO(TMS)
  单片机SWDIO(TMS)  -----  下载器SWCLK(TCK)
  单片机RST         -----  下载器RST

下载器哪一个管脚是SWDIO、哪一个是SWCLK,打开盒子看丝印或者问卖家。通常经常使用的20Pin接口图优化




  1. 软件配置

IAR并不知道你使用什么下载器,所以须要你告诉IAR你使用的什么下载器。debug

  • 使用JLink-V9下载

  • 使用DAPLink下载




IAR调试

下载器和核心板接好线而且在IAR中选择好下载器,就能够下载调试了,调试时最好把优化等级调低(参考IAR经常使用功能简介)。3d

调试经常使用按键说明

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

  • 第 2 个图标是从新进入调试状态。code

  • 第 3 个图标是退出调试。xml

  • 第 4 个图标是每次点击以函数为单位运行,不会进入函数内部。blog

  • 第 5 个图标是单步调试,每次点击运行一行代码,因此只要有子函数就会进入。

  • 第 6 个图标是退出当前执行函数,点击后退出当前运行的函数,执行下一个函数。

  • 第 7 个图标是进入下一个状态,跟第 4 个图标
    功能差很少。

  • 第 8 个图标是直接运行到光标处,用户用鼠标左键点击一下,能够看到前面有光标便可。

  • 第 9 个图标是全速运行(常常和断点配合使用)。

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

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

断点

在Debug过程当中,一般只须要重点关注某一部分代码,让程序运行到指定位置后,再单步调试,进行分析。

通过上面debug按键介绍,可使用第8个图标让程序运行到指定位置,固然也可使用断点+全速运行的方法让程序运行到指定位置。

寄存器查看说明

进行底层开发时,须要查看寄存器的值

打开寄存器窗口

右键选择对应寄存器窗口

全局变量查看

全局变量占用的内存空间是固定的,程序访问该全局变量时直接访问该地址空间便可,所以全局变量能够在live watch中实时显示。可是局部变量是存储在栈空间中的,当退出局部变量做用域时,该局部变量占用的内存空间就会被系统回收,至关于这个变量就没了,所以watch窗口中查看局部变量时,确保程序在局部变量的做用域内,不然会显示ERROR。

  • watch窗口

watch窗口能够查看全局变量和局部变量(查看局部变量时,确保程序在局部变量的做用域内,不然会显示ERROR)。不过watch窗口在全速运行时,里面的变量不能刷新。

  • live watch窗口

live watch窗口能够查看全局变量。不过live watch窗口不能够查看局部变量,在全速运行时,live watch里面的变量会实时刷新。

  • 局部变量窗口

能够显示当前栈空间下的局部变量

其余窗口

调试基本思想

好多同窗拿到调试器后,就只是看成下载器用。不知道怎么去仿真,遇到问题以后,就直接跑过来,啥状况啊?咋回事啊?我…

遇到问题后,首先分析问题,举个例子:

个人程序里设置是小车在拐弯时减速,可是实际发现并无减速?

思考为啥没有减小?

可能没检测到拐弯!

进行Debug,设置一个入弯标志位,拐弯时检查入弯标志位,看是否检测到入弯。

这里假设检测到了入弯,那么再次思考,为啥没有减速?速度是哪里来的?

这里假设速度和PWM控制信号占空比正相关,没有减速,那就是证实,PWM信号占空比没有下降。思考为啥PWM信号占空比没有下降? PWM信号哪里来的?

这里假设PWM占空比是由PID控制的,进行Debug,查看PID控制器的输入信号和各个份量的输出。

总结:整个Debug的思路就是找到异常,分析异常,追踪异常,找到异常根源,解决问题。
,那么再次思考,为啥没有减速?速度是哪里来的?

这里假设速度和PWM控制信号占空比正相关,没有减速,那就是证实,PWM信号占空比没有下降。思考为啥PWM信号占空比没有下降? PWM信号哪里来的?

这里假设PWM占空比是由PID控制的,进行Debug,查看PID控制器的输入信号和各个份量的输出。

总结:整个Debug的思路就是找到异常,分析异常,追踪异常,找到异常根源,解决问题。