C++ 编程Arduino与标准C有何不同?

C++ 编程Arduino与标准C有何不同?,c++,c,arduino,C++,C,Arduino,我有嵌入式系统编程(TI,Atmel)的背景。Arduino的编程与这些有什么不同?在编写Arduino程序时,我可以掌握哪些关于C的知识?Arduino是C,只是每个程序都插入了C: void main() { setup(); for(;;) { loop(); } } 你几乎可以利用你所有的C和嵌入式系统的知识,你会非常好。使用起来一点也不难。将页面添加到书签中,您很快就可以开始写东西了。虽然我不知道ATXMega,但在较新的Arduinos上使用的8位AVR芯片(如

我有嵌入式系统编程(TI,Atmel)的背景。Arduino的编程与这些有什么不同?在编写Arduino程序时,我可以掌握哪些关于C的知识?

Arduino是C,只是每个程序都插入了C:

void main() {
  setup();
  for(;;) {
    loop();
  }
}

你几乎可以利用你所有的C和嵌入式系统的知识,你会非常好。使用起来一点也不难。将页面添加到书签中,您很快就可以开始写东西了。

虽然我不知道ATXMega,但在较新的Arduinos上使用的8位AVR芯片(如ATmega328)使用的是AVR-GCC编译器。这允许编译C和甚至C++到AVR芯片。AVR-GCC之上的一个级别是,这是一个C库,使AVR的编程成为更高级别的任务(不再需要直接引用寄存器等等)

Arduino IDE在后端使用AVR-GCC和AVR libc库。此外,Arduino IDE还提供了一个很好的串行接口

最后,Arduino附带了一个在AVR芯片上烧录的引导加载程序。引导加载程序可以简单地使用串行连接(从USB)而不是系统中的程序员或开发板对AVR进行编程


足够的背景故事,回答你的问题:ARDUNO可以用C语言编程,甚至C++编程。可用的库是用C编写的,所有内容都将使用AVR-GCC编译。Arduino IDE甚至不是必需的

编辑


对这个话题似乎有相当多的兴趣。我写了一篇博文来尝试和给予。

阿杜伊诺像C一样,非常容易学会。他们已经从阅读和写入外围寄存器等基本任务中抽象出来


看看一些示例代码和Arduino参考,如果您在任何其他平台上实际使用过real C,您将很快启动并运行。

在使用Arduino时,您可以利用现有的C知识

其目的是让艺术家/非程序员轻松入门 通过硬件编程和修补,因此“Arduino语言”是 只是一个简化开发的包装器

作为一名C程序员,使用Arduino应该会容易得多。 这本书一点也不长,它很好而且很有趣
在上面的人是热情和乐于助人的。< /P>移除C++标签,因为它是纯C. Sorry,所以我很困惑,因为在这个例子中,他们使用C++,我不明白为什么C++标签已经被移除。ARDUINO库通常是C++类。(DOH!两年的评论:-P)仍然是C++,现在已经快3岁了……呃-PArduino不仅仅是C语言,在使用Arduino IDE时也有一些例外。例如,除非在单独的.h文件中定义结构,否则在函数调用或返回中使用结构会出现问题。如中所述:通常的arduino解决方案/破解是将所有需要自定义数据结构的函数放在一个附加的.h文件中。只需在IDE中创建一个新选项卡并为其命名。h然后#包括“name.h”奇数。这是一个很愚蠢的例子:在ArduinoIDEV1.0.5下编译。我正在下载1.5.6-r2来尝试一下。。。出于好奇,你能粘贴你试过的代码吗?(顺便说一句,我在Ubuntu 12.04 x64上)也在1.5.6-r2下编译。@PaulJurczak IIRC Arduino IDE与.ino源文件的第一行混淆。这有时会导致有效的C++结构成为语法错误。解决这个问题的一个方法是将出现问题的行放在一个单独的.h文件中,然后将它(用双引号)包含在草图中。我用你的例子试过了,效果很好。(另请看上面ViennaMike的评论。)可用的库是用C编写的,主要是用C++编写的。Eclipse项目的repo已被删除。@oldmud0谢谢,我一定是在某个时候删除了GitHub repo。我从答案中删除了对Eclipse项目的引用。