AVR C 样板
这是用 C 编写 AVR 的基本样板。
该项目旨在通过提供对 GPIO 和 USART 等基本功能的支持,让 C 语言中的 Arduino 编程变得有趣,因此您无需一直打开数据表即可开始开发。
它适用于ATmega328P(Arduinos 中的芯片),但可以轻松适应其他部件。
要求
在开始编码之前,您需要安装一些软件包:
avrdude- 闪光工具
avr-gcc- 编译器
avr-libc- AVR 的 libc 实现
avr-binutils- 用于操作 AVR 二进制文件的工具
make- 运行 Makefile
您很有可能已经拥有make,其余的应该在您的发行版的存储库中。
如果你在 Arch 上:
如果您在 Mac 上,您应该能够使用brew提取内容。
入门
提供main.c的是一个很好的起点 - 它包含一些简单的演示代码。
您可以使用 编译它make并使用make flash.
在你可以闪光之前
首先,检查avrdude文件中的选项是否适合您的系统——尤其是设备和速度。
PROG_BAUD = 57600
PROG_DEV = /dev/ttyUSB0
PROG_TYPE = arduino
PROG_ARGS = -c $(PROG_TYPE) -p $(MCU) -b $(PROG_BAUD) -P $(PROG_DEV)
调整PROG_DEV到您的电路板连接到的设备。在 Linux 上它通常是 /dev/ttyUSB0,但也可以是/dev/ttyACM0或其他。在 Mac 上,它将是 /dev/cu.xxx. 在 Windows 上是一些COMx.
Linux 和 Mac 用户可以使用它ls /dev来查看他们的设备。Windows 用户将在他们的设备管理器中找到它。
您也可以调整波特率 ( PROG_BAUD)。有些板子需要115200.
提示:您可以查看 Arduino IDE 正在使用什么 - 它也在运行 avrdude。
添加新文件
如果您将新的 C 文件添加到项目中,请将它的条目.o(目标文件,由编译器在链接之前创建)添加到OBJSMakefile 的列表中。
同样,如果您添加带有头文件的新文件夹,请将其添加到INCL_DIRS.
如果您需要printf(或printf使用浮点数),请在 Makefile 中启用适当的 LD_FLAGS(注释很好)。代码大小显然会增长很多。
笔记
Arduino UNO引导加载程序有一个怪癖,默认Double Speed Asynchronous Mode情况下启用 USART,因此如果您将波特率设置为 9600,您将真正得到 19200。
我们在usart_init()函数中更正此问题以保持一致并避免混淆。
但是,如果您想打开它,您可以使用usart_set_2x(true).
原作者:MightyPork