我知道关于这个主题有很多问题,我已经浏览了其中的相当多的问题。但是我仍然遇到问题。
我开始为原型 PCB 编写测试程序,现在它已经增长到近 1000 行,我正试图将其分解为可用于特定功能的库。
我认为这将非常简单。为我需要的每个库制作 .c 和 .h 文件。即,对于控制 OLED 显示器的功能,我将使用 OLED.h 和 OLED.c。将适当的函数/定义复制到每个文件中。然后将这些文件复制到 Atmel Studio 中的解决方案中。我将它们放入项目名称下的 src 文件夹中。
但是,这不起作用!我得到一个非常长的错误列表。就编译器而言,.h 文件中定义的所有内容显然都是未定义的。我还收到许多类型为“未知类型名称 int16_t/uint16_t/uint8_t/etc...”的错误消息,这让我很困惑。为什么函数在外部库中很重要,现在编译器不理解这些数据类型的含义?
所以,这可能是一个愚蠢的问题。我不希望 Atmel Studio 通过将它们包装在一些“库项目”或其他东西中来控制我的库,我想将它们放在我选择的文件夹中,并在需要时添加它们。我已经搜索了这个问题的答案,我找到了关于更改项目的编译器设置、链接器设置等的长教程......我尝试了这个教程,但仍然没有骰子:http ://www.engblaze.com/教程-使用-avr-studio-5-with-arduino-projects/#setup
我也找不到通过右键单击项目并单击“添加”来添加内容的方法。它要我找到 .a 文件。Atmel Studio 中的“添加库”对话框看起来很糟糕。
当然,将库添加到现有项目并使其正常运行不会那么复杂吗?!我过去使用过 PIC,来到 Atmel 时,我发现了可怕的文档和一个奇怪的超级光滑的超级飞翔的 whiz bang 界面,它不能很好地单独留下并且混淆了简单的功能。我可以做些什么来添加这些库?
更新:似乎回答了我自己的问题。结果我需要将所有的库都包含在 .c 文件中以识别数据类型和诸如此类的东西。我不知何故认为这只需要在主文件中完成,但显然我错了。添加 asf.h 似乎效果很好,因为它包含所有 MCU 特定的端口定义/名称以及所有这些。现在一切都好!