嵌入式技术论坛
直播中

张敏

8年用户 1664经验值
私信 关注
[经验]

一文解读用C语言编写AVR的基本样板

AVR C 样板

这是用 C 编写 AVR 的基本样板。

该项目旨在通过提供对 GPIO 和 USART 等基本功能的支持,让 C 语言中的 Arduino 编程变得有趣,因此您无需一直打开数据表即可开始开发。

它适用于ATmega328P(Arduinos 中的芯片),但可以轻松适应其他部件。

要求

在开始编码之前,您需要安装一些软件包:

avrdude- 闪光工具

avr-gcc- 编译器

avr-libc- AVR 的 libc 实现

avr-binutils- 用于操作 AVR 二进制文件的工具

make- 运行 Makefile

您很有可能已经拥有make,其余的应该在您的发行版的存储库中。

如果你在 Arch 上:

# pacman -S base-devel avr-gcc avr-binutils avr-libc avrdude

如果您在 Mac 上,您应该能够使用brew提取内容。

入门

提供main.c的是一个很好的起点 - 它包含一些简单的演示代码。

您可以使用 编译它make并使用make flash.

在你可以闪光之前

首先,检查avrdude文件中的选项是否适合您的系统——尤其是设备和速度。

# AVRDUDE settings
PROG_BAUD = 57600
PROG_DEV  = /dev/ttyUSB0
PROG_TYPE = arduino

# Build the final AVRDUDE arguments
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

更多回帖

发帖
×
20
完善资料,
赚取积分