如何编程Arduino与标准C不同?

我有编程嵌入式系统的背景(TI MSP430 ,Atmel ATxmega )。 如何编程Arduino与那些不同? 我可以用什么知识来编写Arduino?

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

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

最后,Arduino带有一个刻录在AVR芯片上的引导加载程序。 引导加载程序可以使用串行连接(来自USB)而不是In-Sytem编程器或开发板对AVR进行编程。

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

编辑

在这个主题中似乎有相当多的兴趣。 我写了一篇博文,试图提供有关AVR,Arduino和AVR-GCC的更多深入细节 。

使用Arduino时,您可以掌握现有的C知识。

目的是让艺术家/非程序员轻松地开始使用硬件编程和修补,因此’Arduino语言’只是简化开发的包装器。

对于你来说,作为C程序员使用Arduino应该会容易得多。 文档并不冗长, 维基很好, 论坛上的人热情而且乐于助人。

Arduino是C,除了它被插入到每个程序中:

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

您可以通过C和嵌入式系统获得所有知识,而且您将获得更多。 它根本不难使用。 为Arduino参考页面添加书签,您将立即撰写内容。

Arduino是C型的,非常容易上手。 他们已经完成了从读取和写入外设寄存器以执行基本任务等方面的工作。

一看一些示例代码和Arduino引用,如果您在任何其他平台上实际完成了真正的C,那么您将立即启动并运行。