Visual studio 2013 使用VisualStudio为AVR编写代码
我正在使用Visual Studio 2013为AVR编写代码。我一直在学习教程 在编写代码时,我注意到Visual Studio不断地在诸如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
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;
}