2013-07-18 27 views
3

我正在寫一個自定義庫,它在Arduino Uno上正常工作。不過,現在我已經掌握了一個Arduino Due,我需要定義一些電路板特定的引腳常量。Arduino自定義庫的條件編譯常量

我知道大多數電路板可以通過#ifdef指令使用\\arduino-1.5.2\hardware\tools\avr\avr\include\avr\io.h中定義的IO常數來完成此操作。例如:

#if defined (__AVR_ATmega128__) 
    //do something specific 
#endif 

有沒有人知道哪個是正確的常數使用的到期?

回答

2

我通常使用...

#ifndef __AVR__ 
// something special just for non AVR8's 
// ... 
#endif 

在哪裏,因爲我相信你也可以使用...

#ifdef _SAM3XA_ 
// something special just for Due's SAM3XA 
// ... 
#endif 
+0

'_SAM3XA_'是一個(不知道爲什麼只有一個下劃線!)。謝謝 –

4

_SAM3XA_將工作,但包括了很多其他愛特梅爾ARM芯片( SAM3X8C,SAM3X8H等)。

東西更精確的將是

#if defined (__arm__) && defined (__SAM3X8E__) // Arduino Due compatible 
// your Arduino Due compatible code here 
#endif 

(請參閱文件sam3.h獲取更多信息。)

如果你只是想針對的Arduino由於(留出兼容的電路板),你可以使用

#if defined (_VARIANT_ARDUINO_DUE_X_) 
// your Arduino Due code here 
#endif 

(這是在Arduino的由於的variant.h文件中定義)。