Visual studio 2013 使用VisualStudio为AVR编写代码

Visual studio 2013 使用VisualStudio为AVR编写代码,visual-studio-2013,intellisense,avr,winavr,Visual Studio 2013,Intellisense,Avr,Winavr,我正在使用Visual Studio 2013为AVR编写代码。我一直在学习教程 在编写代码时,我注意到Visual Studio不断地在诸如DDRB或PORTB之类的内容下划线,并且不断地出现诸如Error:identifier“PORTB”未定义等错误,但是,程序编译正确 有趣的是,按下alt-F12时,Visual会在定义文件的地方找到许多文件。您的Makefile会使用-mmcu=YOURCHIP选项运行编译器。这隐式定义了与芯片对应的宏。例如,对于atmega32u4,宏为AVR\U

我正在使用Visual Studio 2013为AVR编写代码。我一直在学习教程

在编写代码时,我注意到Visual Studio不断地在诸如
DDRB
PORTB
之类的内容下划线,并且不断地出现诸如
Error:identifier“PORTB”未定义等错误,但是,程序编译正确


有趣的是,按下alt-F12时,Visual会在定义文件的地方找到许多文件。

您的Makefile会使用-mmcu=YOURCHIP选项运行编译器。这隐式定义了与芯片对应的宏。例如,对于atmega32u4,宏为AVR\U atmega32u4。Intellisense在编译器的“外部”运行,因此它不知道此宏,并且在解析标准avr头文件(如
avr/io.h
时,它会跳过特定MCU头文件的正确包含。有点像:

#elif defined (__AVR_ATmega32U4__)
#  include <avr/iom32u4.h>
#定义了elif(uuu AVR_uatmega32u4_uuu)

#include

我建议只使用原始IDE作为Make文件生成器,并从VS2013中调用该makefile。这会增加维护两个不同项目的开销(但大多数需要更改makefile的操作很少),但会留下良好的VS IDE的舒适感,并让您返回原始IDE进行调试


您还必须在vs2013项目设置中设置include目录,以获得intellisense工作

您可以在项目属性中告诉intellisense它可以在哪里找到标题,以及它应该假定设置的定义。
#define __AVR_ATmega32U4__ 
#include <avr/io.h> 
int main() { 
    char a = PORTB;
}