虽然我不了解ATXMega,但像新版Arduino上使用的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)而不是使用内部系统编程器或开发板来编程AVR成为可能。
足够的背景知识,回答你的问题:Arduino可以使用C甚至C ++进行编程。可用的库是用C编写的,并且所有内容都将使用AVR-GCC进行编译。甚至不需要Arduino IDE。
编辑
似乎对这个话题有相当多的兴趣。我写了一篇博客文章,尝试给出有关AVR、Arduino和AVR-GCC的更详细信息。
Arduino类似于C语言,非常易学。他们已经将读写外围寄存器等基本任务抽象化了。
只要看一下一些示例代码和Arduino参考资料,如果你之前在其他平台上真正使用过C语言,那么很快就能上手。
Arduino是一种基于C语言的开发平台,不同之处在于每个程序中都会插入以下内容:
void main() {
setup();
for(;;) {
loop();
}
}