2014-02-15 5 views
2

Visual Studio 2013을 사용하여 AVR 코드를 작성하고 있습니다. 나는 this 자습서를 따라 왔습니다.Visual Studio를 사용하여 AVR 코드

코드를 작성하는 동안 Visual Studio에서 DDRB 또는 PORTB과 같은 내용을 밑줄 긋고 계속 나타 났으며 오류가 계속 발생합니다 (예 : Error: identifier "PORTB" is undefined). 프로그램이 올바르게 컴파일됩니다. 가 정의 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; 
} 

this page

+1

프로젝트 속성에서 헤더를 찾을 수 있고 설정해야한다고 정의하는 intellisense를 인텔리 센스에 알릴 수 있습니다. –

1

중간에 어떤 MCU에 해당하는 매크로를 찾을 수 있습니다. 원래의 IDE를 메이크 파일 생성기로 사용하고 VS2013에서 해당 메이크 파일을 호출하기 만하면됩니다. 이것은 두 개의 서로 다른 프로젝트를 유지하기위한 오버 헤드를 가지고 있지만 (대개 makefile을 변경해야하는 작업은 거의 없습니다) 좋은 VS IDE의 편의성을 떠나 디버깅을위한 원래 IDE로 되돌아갑니다.

intellisense 작업을 수행하려면 vs2013 프로젝트 설정에서 include 디렉토리를 설정해야합니다.

관련 문제