arduino中有多个标签/文件?

时间:2015-06-23 18:51:23

标签: arduino

我看了很多但是还没找到一本涵盖所有这些内容的好教程。 因此,我需要将项目分解为多个标签/ ino文件,只是为了使其更清晰。

因此,在您打开新标签后,我想问一些问题:

  1. 如果主项目文件(简称main)有另外两个标签,请说AB,那么,B中的每个函数都可以显示{{ 1}}以及main

  2. 中断会发生什么?如果我在文件A中定义了一些中断,它是否可以调用A文件中的中断函数?

  3. main会发生什么?和defines?如果包含某个库的文件includes允许说A,那么Wire文件是否也会看到它,反之亦然?

  4. 什么是与文件一起使用的战略?您是否将所有库添加到main中,还是应该将它们添加到其他文件中? (例如,处理陀螺仪并且必须包含一些库的文件)

2 个答案:

答案 0 :(得分:2)

您可能已经注意到每个.ino文件都必须包含在具有相同名称的文件夹中。然后,此文件夹中包含的每个其他.ino文件都被视为"额外选项卡"。

据我所知,在编译时,.ino文件被合并,就好像它们是一个文件一样。例如,这是对void setup()"的重新定义的重新定义的原因。由于在同一文件夹中的不同.ino文件中包含setup(或loop或其他任何内容)而导致的错误。

来自" the docs":

  

多文件草图

     

草图可以包含多个文件(标签)。要管理它们,请单击环境顶部附近滚动条正上方的向右箭头。选项卡具有四个扩展名之一:无扩展名,.c,.cpp或.h(如果您提供任何其他扩展名,则句点将转换为下划线)。

     

编译草图时,所有没有扩展名的标签会连接在一起形成"主草图文件" 。带有.c或.cpp扩展名的选项卡是单独编译的。要使用扩展名为.h的标签,您需要#include它(使用"双引号"不是)。

虽然它提到了#34;没有扩展名的文件"但我认为它也适用于扩展名为.ino的文件。

答案 1 :(得分:1)

我一直无法将Arduino IDE用于多个源文件。我倾向于使用类似Arduino-Makefile的东西,它可以让你更好地控制你的Arduino项目的构建过程。

  1. 您需要创建一个声明这些函数的头文件,然后在您的.ino文件中包含该头文件。
  2. 假设您正在使用AVR库,您可以让中断处理程序调用一个函数(如中断处理程序所示)。然后只需在ISR之外调用interrupt_handler()函数。
  3. 您应该包含每个文件所需的依赖项。这样,如果AB删除#include <Wire.h>,您的主文件仍将包含依赖项。由于标题包含警卫,文件将不会被包括两次。
  4. 中断处理程序

    #include <avr/interrupt.h>
    #include "A.h"
    
    /* Declare our ISR */
    ISR(interrupt_vector)
    {
        /* Call our handler (located in A) */
        interrupt_handler();
    }