【问题标题】:Using Visual Studio to code for AVR使用 Visual Studio 为 AVR 编写代码
【发布时间】:2016-07-30 06:00:06
【问题描述】:

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

在编写代码的过程中,我注意到 Visual Studio 不断强调诸如 DDRB 或 PORTB 之类的内容,并且我不断收到诸如 Error: identifier "PORTB" is undefined 之类的错误,但是程序编译正确。

有趣的是,按下 alt-F12 后,Visual 会找到许多定义它们的文件。

【问题讨论】:

    标签: visual-studio-2013 intellisense avr winavr


    【解决方案1】:

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

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

    因此,如果您想为这些标头中定义的内容提供智能感知支持,您可能需要在源代码的顶部定义该宏,如下所示:

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

    你可以在this page中间找到哪个宏对应哪个MCU

    【讨论】:

    • 你可以在项目属性中告诉智能感知它可以在哪里找到标题并且定义它应该假设设置。
    【解决方案2】:

    我建议简单地使用原始 IDE 作为 Make-File 生成器,然后从 VS2013 调用该 makefile。这会产生维护两个不同项目的开销(但大多数需要更改 makefile 的操作很少见),但留下了良好 VS IDE 的舒适性,并让您回到原始 IDE 进行调试。

    您还必须在 vs2013 项目设置中设置包含目录才能使智能感知工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2011-05-28
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多