Arduino:问题包括自定义库中的ShiftPWM库

时间:2013-05-01 22:32:11

标签: arduino libraries

我最近遇到ShiftPWM,它经过优化,可以使用移位寄存器控制RGB LED。

我下载了源代码,并且能够运行我的面包板上提供的示例没问题。我甚至调整了草图,并且使用ShiftPWM库中的函数感觉很舒服。

我想将ShiftPWM功能包含在我正在处理的当前项目中,该项目已经拥有大量的库文件。我想#include "ShiftPWM.h进入我的Registers.h文件,以便我可以使用自己的语法和面向对象的层次结构来点亮我的LED。

在示例arduino sketch中,我需要在包含ShiftPWM库文件之前定义一些常量:

#define SHIFTPWM_NOSPI
const int ShiftPWM_latchPin = 2;
const int ShiftPWM_dataPin  = 4;
const int ShiftPWM_clockPin = 3;
const bool ShiftPWM_invertOutputs = true;
const bool ShiftPWM_balanceLoad = false;
#include "ShiftPWM.h" 

所以我想我可以简单地将这些行复制到我的Registers.h文件中,以及设置代码和其他用于点亮LED的功能。

但是,当我这样做并尝试编译我的arduino sketch(仅包含Registers.h)时,我的编译器给出了以下(缩写)错误:

multiple definitions of '__vector_11'
.../ShiftPWM/ShiftPWM.h:175 first defined here
multiple definitions of 'ShiftPWM'
.../ShiftPWM/ShiftPWM.h:175 first defined here

它指的是:

ISR(TIMER1_COMPA_vect) {
    ShiftPWM_handleInterrupt();
}

我的研究表明,这行代码与arduino运行中断所使用的定时器有关。例如,人们在尝试运行arduino Servo和Tone库时经常会得到“__vector_11的多个定义”错误,因为他们都试图使用timer1。

我想知道为什么我只是通过尝试从我自己的自定义库链接到ShiftPWM库来获取此错误。我的代码中没有任何地方可以手动设置任何类型的计时器。我假设它源于一些链接问题,但我真的无法弄清楚它可能是什么。

感谢任何帮助。

0 个答案:

没有答案