下载器与单片机之间的接线有两种JTAG和SWD,SWD只须要四根线(GND、TCK、TMS、RST(可选)),通常使用SWD接线便可。web
龙邱核心板的下载接口丝印层都有一个白色凸口,对应龙邱下载器排线的凸口。svg
若是没有使用龙邱下载器,打开核心板原理图,找到下载口部分,接线对应便可:函数
单片机SWDIO(TMS) ----- 下载器SWDIO(TMS) 单片机SWDIO(TMS) ----- 下载器SWCLK(TCK) 单片机RST ----- 下载器RST
下载器哪一个管脚是SWDIO、哪一个是SWCLK,打开盒子看丝印或者问卖家。通常经常使用的20Pin接口图优化
IAR并不知道你使用什么下载器,所以须要你告诉IAR你使用的什么下载器。debug
下载器和核心板接好线而且在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窗口能够查看全局变量和局部变量(查看局部变量时,确保程序在局部变量的做用域内,不然会显示ERROR)。不过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的思路就是找到异常,分析异常,追踪异常,找到异常根源,解决问题。