写在前面

很长一段时间以来,Arduino的开发基本都是在Arduino-IDE下完成(即官方开发工具),其优点就不再详述了,缺点显而易见,无法进行调试,当然对于简单的程序,也没有必要进行调试,串口打印出来看一下就可以了,但是当需要进行复杂程序开发或者BT功能开发的时候调试工作在所难免。以下仅对Arduino的调试环节与大家分享,如果错误之处还请大家指正。

如需转载,请标明原文出处。

开发环境

日下arduino的应用如火如荼,支持arduino的开发工具也越发的多了,常见的例如sublime text 、Microsoft Visual Studio、Atmel Studio等。对于调试工作以下以Atmel Studio和Microsoft Visual Studio进行说明。

使用插件调试(Visual Micro Arduino Studio)

不难看出Atmel Studio和Microsoft Visual Studio

都是一伙人开发的,整个开发界面方式非常相似,也都对Arduino进行了很好的支持。这里一并描述。

配置环境

首先打开开发软件,在菜单-工具-扩展与更新(英文版自行对照)

找到Arduino ide for visual studio

,找不到就在右边搜索栏里直接输入Arduino,点击安装即可。

安装完成后就会菜单中就会出现vMicro选项。

当然Arduino 官方IDE软件也不能少 安装完后即可。

点击菜单-vMicro-Visual Micro Explorer 对Arduino 路径进行设置

IDE 和

Board中选择好自己的版本和板子、芯片型号

以上步骤网上很多详细介绍。

特别说明:这个插件是付费的,不掏钱是不能进行调试的,可以根据自己情况选择一年的或者不限期的,20-45美刀 支持支付宝付款(实时汇率)。选择Non-commercial/student 就可以啦

土豪就无所谓了。

掏钱了,就能收到license key ,这里就不啰嗦了。

开始调试

打开Arduino project (选择一个arduino

文件进行调试,如果要从头开发就新建一个,该起名起名该保存保存)。

设置断点

要想显示数据需要进行设置

在断点处右键-条件/执行

注:如果要查看LOOP内的数据时,最好设置一下断点触发条件,否则你会烦死的。

这里输入完,按回车就可以了

这个说明一下,设置条件的意义就是

当收到的这个字符串长度大于0

的时候再显示出这个字符串的值,然后停在这里别跑,如果选择了继续执行,程序就继续该干嘛干嘛去了。

如果要显示好几个数据值{数据A}{数据B}……这样就可以。如果这个要查看的数据写错了或者在当前位置非法,编译的时候就会报错。

硬件连接和设置

说完软件说硬件,不管是开发板还是自己的板子,调试需要串口接入,这里可以设置烧写和调试分别使用什么接口。

点击vMirco-Uploader,如果打算用串口烧写就选择好串口,当然你的板子需要支持串口写入(需要bootloader),如果打算使用别的烧写器就在programmer中选择对应的烧写器,可以勾选一直使用烧写器烧写的选项。

在调试选项中设置调试串口信息

vMirco-Debugger-Override Local Port / Speed

勾选Automatic Debugging 可以直接进入调试模式

串口无所谓是板载USB转232 还是RX

TX 引出了再接USB-232

都可以

开始调试

点击vMirco-Build & Upload

等烧写完成后就进入了调试模式,这个时候串口窗口会打开

这里我们在串口发送一些数据,看一下断点处的情况,按回车发送

此时

程序暂停在了断点位置,并把获取的信息显示出来

vMirco中Continue/Step Next

也会亮起,如果设置多个断点,点击即可进行下一步跟踪。

这里可以输入带有格式符的内容,特别说明一下

如果输入了特殊字符数据将会显示乱码,不会影响程序正常解析,只是你看不到。

关闭串口或者点击vMirco-Stop Debug就可以结束调试。

使用Atmel-ICE进行调试

Arduino毕竟使用的还是Atmel的芯片,自从microchip收购了Atmel之后,对这一部分的扶持力度也有加强,之前大家总是说Arduino只能当玩具玩,做项目还是SMT32,现在官方给出的说法是Atmel的稳定性其实更适合工业环境(来自官方的说法)。在我看,使用什么系统搭建平台,完全取决于开发成本,这里说的成本包括开发的时间成本、开发配套的成本以及BOM成本,至于能不能胜任项目需求,我想各大厂家都会有相应的芯片可以选择。

Atmel-ICE 官方报价RMB594.31

BASIC版本就可以了

FULL

KIT里面只多了很多接口,可以根据自己情况购买 ,这里使用的是328P的芯片,只有ICSP接口,所以只能使用6Pin的ISP线。

特别说明一下,Atmel-ICE自己没有供电,板子需要单独供电(引用togke(弘毅)老大的话“带供电的都是土路子,人家大厂的从来不带供电”)

硬件连接与设置

Atmel-ICE Basic 配线一边10Pin 一边 6Pin ,10Pin接在对应的AVR接口,6Pin接到板子的ICSP接口

这里注意线序,别插反了。

打开Atmel Studio 菜单中选择工具-Device Programming。

Tool中选择Atmel-ICE,芯片型号,点击Apply,程序会读出芯片相关信息。

点击Device signature 下方的Read

(这一步很关键如果失败则无法进行后续工作),将会显示芯片当前的状态信息,以及内存、熔断标记。

在vMirco中Uploader-Programmer,选择Atmel Studio ATMEL-ICE (ISP),Debugger中选择Atmel Studio Debugger 。

点击菜单调试-最下方程序Properties…

Tool选项卡中

Selected

debugger/programmer 中选择Atmel-ICE

Interface 选择debugWIRE(ISP模式不能调试只可以烧写程序)

点击菜单调试-Start Debugging and Break 当然点击Continue 或者逐语句、逐过程、运行到光标处

都可以。

程序会弹出提示,修改DWEN标记,因为这里使用了debugWIRE方式进行调试,具体介绍网上很多,有兴趣的自行学习。这里只能同意。确认OK

开始调试

注:这里调试的文件不再是原来的ino文件而是cpp,设置断点。

这里就可以使用任何一个串口调试工具进行数据发送。

程序停到断点处,我们可以添加监视

右键要查看的变量选择添加监视

下方就可以显示对应变量的相应信息,如果操作内存右侧可以看到相应的变化

在Atmel-debugger 工具栏选项卡中可以查看IO引脚相应的数据变化

结束调试

结束调试的时候一点要点击菜单调试-Disable debugWIRE and

Close按钮,否则后果DWEN标记为不能被改回。原因很简单debugWIRE占用了芯片的Reset引脚进行调试。

官方给出了明确说明

注:如果很不幸,没有按照标准作业操作,后面将无法在进行烧写操作,解决方案,打一个断点记得在cpp文件中,然后使用逐语句、逐过程、运行到光标处

都可以当开始调试的时候点击停止调试或者Disable

debugWIRE and Close按钮进行挽回。之后最好再查看一下熔断标记位,将DWEN去掉。

再次调试

有时会出现正常结束调试完后,需要再次进行调试时报错的现象

解决方案,熔断位正确时,板子断点,重启在进行调试即可。

结束语

感谢togke(弘毅)的答疑解惑,祝愿使用Arduino的朋友2018年0

bug。

arduino调试的流程图_Arduino 的调试以及相关问题相关推荐

  1. arduino调试的流程图_Arduino UNO 样板调试

    : 从硬件上看, Arduino UNO 与之前 Arduino 2009 版本的最大不同在于 USB 转串 口部分, Arduino 2009 采用的是 FTDI 专用芯片 FT232RL ,而 A ...

  2. 试图运行项目时出错,无法启动调试。没有正确安装调试器,请运行安装程序安装或恢复调试器。...

            用Visual Studio.net 2003调试项目时,出现错误对话框,显示如下:         试图运行项目时出错,无法启动调试.没有正确安装调试器,请运行安装程序安装或恢复调试 ...

  3. 【转】“无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域”错误提示的解决...

    错误提示: 无法在Web服务器上启动调试.您不具备调试此应用程序的权限,此项目的URL位于Internet区域 一般用下面的方法可以解决: 1:确认在"配置属性"中的"启 ...

  4. python调试器的功能,python调试器是什么

    1.说明 Python调试器,是可以节省时间并提高 Python 技能的工具,有标准库自带的pdb和开源的ipdb两种. 2.两种类型 pdb是Python自带的库,为Python提供了一种交互式的源 ...

  5. VS2019调试查看变量_PL/SQL调试存储过程?看这篇就够了

    概述 虽然现在存储过程相对比较少用了,但是平时接触不可避免的要跟存储过程打交道,当需要自己写的时候总会碰到这或那的错误,这个时候一般要怎么调试呢? PL/SQL调试 PL/SQL中提供了[调试存储过程 ...

  6. c++ builder xe2 (Embarcadero rad studio) 远程调试 同样适用于 delphi 远程调试 教程

    c++ builder xe2 (Embarcadero rad studio) 远程调试 同样适用于 delphi 远程调试 教程 转载于:https://www.cnblogs.com/Littl ...

  7. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. visual studio 调试python_Visual Studio Code Python 调试设置

    很意外Visual Studio Code居然支持Python代码的断点调试.一起来配置一下. 工具/原料 Visual Studio Code 1.1 Python 2.7.11 方法/步骤 1 首 ...

  9. oracle中调试存储过程,详解Oracle调试存储过程

    详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...

  10. java调试案例_Spring-boot的debug调试代码实例

    这篇文章主要介绍了Spring-boot的debug调试代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 xml文件中配置: scf.serv ...

最新文章

  1. 树莓派:人在太空,刚下火箭,诚招小于19岁的代码开发者
  2. 数字三角形,最长上升子序列,背包模型 AcWing算法提高课 (详解)
  3. debian9 没有ipv4
  4. centos7部署nodejs新版
  5. ubuntu16.04caffe训练mnist数据集
  6. 这操作厉害:怎么样发布你的 Python模块给别人 “pip install”
  7. ubuntu之修改硬盘名称
  8. layUI table 按条件搜索 结果整个页面刷新
  9. 剑指offer——面试题41:和为S的连续整数序列
  10. putty的保存功能如何使用
  11. 装箱问题 BPP first fit、best fit、first fit decreasing、best fit decreasing
  12. 关于网页导出Excel
  13. linux部署was找不到8879端口,WAS8.0与IHS集群安装与配置指导手册
  14. arm-linux-gcc交叉编译器和gcc编译器的下载地址
  15. 单片机i o口扩展 c语言,基于2片74LS138的单片机I/O口扩展分析
  16. 基于Java毕业设计游戏分享平台源码+系统+mysql+lw文档+部署软件
  17. 青春树儿童摄影网网页
  18. 51单片机使用PWM调速
  19. android APP闪退后如何屏蔽自启动
  20. c语言 判断互质,[经典算法] 找出某数以内与其互质的数

热门文章

  1. 百度竞价的五个基本特征!
  2. 贵州省计算机职称考试时间2015年,关于2015年8月份贵州贵阳职称计算机考试安排通知...
  3. 微软拼音变成繁体,如何修改为简体
  4. 现代黑科技版“指鹿为马:使用CycleGAN实现男女“无痛变性”
  5. NLP太卷,我去研究蛋白质了~
  6. 查看电脑开机关机记录
  7. android模拟器如何增加RAM
  8. 网络口碑营销从“可以做”、“值得做”到了“必须做好”的阶段!
  9. 网页性能优化之图片懒加载
  10. 李白关于鸿蒙的诗,名诗欣赏:李白《把酒问月》之--青天有月来几时