2014-02-15 78 views
2

我正在使用Visual Studio 2013编写AVR代码。我一直在关注this教程。使用Visual Studio编写AVR代码

虽然写代码,我注意到,Visual Studio中保持在下划线之类的东西DDRBPORTB和我不断收到类似错误Error: identifier "PORTB" is undefined,但是,程序编译正确。

有趣的是,在按下ALT - 它们被定义F12视觉的发现许多文件。

回答

4

您的Makefile运行带有选项-mmcu = YOURCHIP的编译器。这隐含地定义了与您的芯片相对应的宏。例如,对于atmega32u4,宏是AVR_ATmega32U4。 Intellisense在你的编译器的“外部”运行,所以它不知道这个宏,并且在解析标准的avr头文件时 - 比如avr/io.h,它跳过了正确包含你的特定MCU头文件的情况。它是这样的:

#elif defined (__AVR_ATmega32U4__) 
# include <avr/iom32u4.h> 

所以,如果你想为那些你可能需要定义一个宏头文件中定义的东西IntelliSense支持,在源代码的顶部,这样的:

#define __AVR_ATmega32U4__ 
#include <avr/io.h> 
int main() { 
    char a = PORTB; 
} 

你可能会发现什么宏对应于哪个MCU在this page

+1

您可以在项目属性中告知intellisense,它可以找到标题,并定义它应该假设设置。 –

1

当中的中间位置我建议只使用原始IDE作为生成文件生成器,并从VS2013调用该生成文件。这对于维护两个不同的项目(但主要是需要对makefile进行更改的操作非常少见)的开销很大,但却让VS IDE变得更加舒适,并让您回到原始IDE进行调试。

您还必须在vs2013项目设置中设置include目录才能获得智能感知工作。

相关问题