在Arduino IDE之外编写C程序?


12

我喜欢将Arduino IDE用于简单项目和Arduino入门的想法,但是到目前为止,我的共识是,它适用于Arduino和/或一般编程的新手。

我的理解是,有可能完全在Arduino IDE外部从头开始编写C程序,然后使用AVRDUDE之类的工具将其上载到Arduino MCU。这个选项虽然吸引人并且很有趣,但是让我有些担忧:

  • 此类“原始C”程序需要导入/链接哪些Arduino库?我假设当一个基于Arduino IDE的程序执行一个程序时,digitalWrite(...)实际上是在后台调用一个可能由Arduino提供的C库。我担心确保所有这些“底层库”都包含在我的C程序中。有什么想法吗?
  • 通过在Arduino IDE外部进行独奏飞行并冒险冒险还有其他“失落”吗?我现在需要“自己动手”的任何功能/特性吗?

arduino.stackexchange.com/questions/9538/…关于我的问题的答案帮助我进行了设置。您可以替换/保留arduino中的任何内容。您可以:-制作自己的板子。-使用您自己的IDE。-使用您自己的库。
保罗

Answers:


4

在这里,您有两篇不错的文章,介绍Arduino在后台的实际工作方式。它如何消除微控制器编程中的摩擦。

  1. Arduino内部原理之旅:Hello World实际如何工作?
  2. Arduino和GCC,仅使用makefile编译和上传程序

这里也进行了讨论,是否有将Arduino代码转换为C代码的方法或教程?


感谢@Michal Foksa(+1)-我想我对此感到震惊,答案还不那么为人所知!我本来以为在Arduino的IDE了,说,lib/它的安装根目录下的地方,有喜欢的东西arduino-core.dllarduino-io.dll等等
smeeb

@smeeb:没错,Arduino IDE安装确实必须包括基本运行时函数库以及用户提供的库。在makefile中链接2的页面的中途,符号LIBS指向它们。它们不是.dll(在Windows中,在运行时称为)。它们是目标文件(在类Unix系统下为.o,在Windows下可能相同),它们与已编译的目标文件静态链接为(最终).hex加载文件,该文件是完整的加载程序映像。...
JRobert

...以编写程序为生的人们众所周知,但是Arduino(品牌)工具设计师故意隐藏了尽可能多的混乱细节,以使人们可以使用数字电子设备,而不必成为专业人士程序员和工程师去做。就您在Arduino社区中很难找到的信息而言,它们已经取得了成功!
JRobert

不幸的是,由于遗留原因,您构建Arduino软件的方式与标准接受方式完全不同。为简化起见,他们在“消除摩擦”中创建了一个庞大的不兼容社区。每个IDE“插件”都是试图以接近标准的方式使某些非标准的工作正常进行。在遇到问题时,请记住这一点。

5

您绝对需要链接到其他库。但是,除非您想/需要做一些不寻常的事情,否则您不必自己担心所有细节。几种替代的IDE已经支持Arduino,通常通过插件自动处理很多细节。

我通常推荐Eclipse,因为它是用于各种目的的非常广泛使用的IDE。但是,还有其他几种可能性。有关更多信息,请参见此问题:


感谢@Peter R. Bloomfield(+1)-但是,我确实在寻找非IDE中心的答案。并不是说我对IDE有什么反对,只是为了了解Arduino的“图书馆格局”,我觉得IDE只是一个不必要的中间人。话虽如此,我会假设所有Arduino应用程序都必须链接1个以上的“核心库”,然后根据您的应用程序的实际情况,可能需要或可能不需要可选库。 您能指出我这些“核心库”以及任何其他可选库的列表吗?再次感谢!
smeeb 2015年

为了证明我上面所说的关于IDE是“不必要的中间人”的意思,我真正的意思是:我应该能够在任何 IDE(Arduino,Eclipse或其他)之外编写C应用程序,链接到Arduino库,我的应用程序需要,并且仍然将应用程序编译/部署到Arduino硬件。我想知道这些库是什么,在哪里可以找到有关它们的文档。
smeeb,2015年

@smeeb鉴于Arduino是针对初学者的,所以我认为这些方面没有太多(如果有的话)官方文档。我希望最好的研究方法是在网上搜索Arduino makefile的示例。在此页面底部附近有一些旧示例。
彼得·布卢姆菲尔德

@smeeb:和您一样,我也不喜欢IDE。网络上有一些通用的Arduino makefile。基本上,你必须编译Arduino的核心库到libore.a,然后编译.ino文件-x c++ -include Arduino.h为你的编译理解它(加了一堆-D-I等),并链接与libcore.a。
埃德加·博内特

0

是的,您可以在Arduino IDE外部编写程序。例如,我尝试使用带有AVR插件的Eclipse IDE,现在我坚持使用AVR Studio。当然,当您在Arduino IDE中编写代码时,您将不会拥有通常可能会使用的某些功能,也没有一些库。但是,为什么不尝试实现这些东西呢?当您可以学习和编写自己的功能和库时,为什么要限制自己使用别人提供的功能和库,这可能比现有的更好。


-3

ESP8266 + Arduino IDE 1.6.4便携式-完整的快速安装指南www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

您的所有Arduino IDE v 1.6.4文件(包括ESP8266扩展名,草图,已安装的库文件等)都应仅位于新创建的“ arduino-1.6.4”文件夹下。


这不是一个很有帮助的答案。该链接不是真正的链接。即使是这样,由于链接站点可能会崩溃,Stack Exchange也不愿接受仅链接的答案。请扩大您的答案。
尼克·加蒙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.