티스토리 뷰
아두이노 IDE의 경우 간단하게 사용하기에는 부족함이 없지만, 조금 더 확장시켜서 헤더를 직접 작성한다거나, 기타 심도있는 작업을 하기에는 무리가 있다.
그리하여 VSCode를 사용하여 환경을 구성하고 작업을 하곤 했다.
https://juahnpop.tistory.com/71
아두이노 팁 #1. Visual Studio Code 아두이노 환경설정
Visual Studio Code(VS Code)로 아두이노 프로그래밍하기 본 포스트의 내용은 아두이노 프로그래밍을 위해서 필수로 필요한 부분이 아닙니다. Arduino IDE 로 프로그래밍을 하다가 좀 더 쾌적한 환경에서
juahnpop.tistory.com
위의 블로그는 내가 자주 참고하곤하던 환경구성 블로그이다.
위의 블로그를 따라 VSCode의 환경구성을 완료하고 여러가지 테스트를 하던 중 문제가 발생했다.
일반 Serial에 대해 식별자 정의 문제가 발생하는 경우는 여러가지 해법이 나와있었지만, 그 외에 Serial1이나 2등을 지원하는 보드를 사용할 경우 정말정말 거슬리는 빨간 줄이 나타나는 현상이 발생해서 이를 해결하기 위해 아두이노 헤더를 뜯어보았다.
결론부터 말하자면, Arduino 를 VSCode에서 사용하기 위해 만든 ../.vscode/c_cpp_properties.json을 수정해 주기만 하면 된다.
사실 수정수준도 아니고 글자 몇개만 추가하면 된다.
원래의 환경구성 상태라면 위와 같이 되어있겠지만, 여기서
"defines" : [ ]
부분에 "UBRR1H"를 추가해주기만 하면 된다.
내가 사용한 c_cpp_properties.json은 다음과 같다.
{
"configurations": [
{
"name": "Win32",
"includePath": [
"C:\\Program Files (x86)\\Arduino\\tools\\**",
"C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\**",
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\avr\\include",
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\lib\\gCc\\avr\\7.3.0\\include\\**"
],
"forcedInclude": [
"C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino\\Arduino.h"
],
"intelliSenseMode": "msvc-x64",
"defines": [
"USBCON",
"UBRR1H"
]
}
],
"version": 4
}
여기서 "includePath"라던가, "forceInclude"부분은 각자 Arduino의 소스에 맞게 경로를 변형시키면 된다.
그래서 어떻게 찾게 되었는가에 대해 설명하자면, Arduino의 C드라이브 내 소스를 찾아 들어가보면 다음과 같은 파일들을 찾을 수 있다.
나의 경우에는 아래의 경로에서 찾을 수 있었다.
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino
이 중 HardwareSerial.h 를 열어보면 다음과 같은 코드를 볼 수 있다.
...
#if defined(UBRRH) || defined(UBRR0H)
extern HardwareSerial Serial;
#define HAVE_HWSERIAL0
#endif
#if defined(UBRR1H)
extern HardwareSerial Serial1;
#define HAVE_HWSERIAL1
#endif
#if defined(UBRR2H)
extern HardwareSerial Serial2;
#define HAVE_HWSERIAL2
#endif
#if defined(UBRR3H)
extern HardwareSerial Serial3;
#define HAVE_HWSERIAL3
#endif
...
간단히 내가 이해한 바에 의하면 UBRXH가 기 정의되어 있다면, HAVE_HWSERIALX가 정의되고, 이 정의는 각각 HardwareSerialX.h에 포함된 # if defined를 통해 HardwareSerial을 사용할 수 있도록 하는 것으로 보인다.
아무튼 Serial1이 아니라 Serial2나 Serial3를 사용하는 경우에도 똑같이 c_cpp_properties.json에 추가해주면 신경쓰이는 빨간줄 없이 편안하게 사용할 수 있을것으로 보인다.
- Total
- Today
- Yesterday
- 제어기초
- 제어
- 아두이노
- 입출력
- 마이크로컨트롤러
- 추상
- serial1
- D/Aconverter
- MAXON
- Configuration
- hardware
- 환경구성
- gitignore
- 하드웨어
- epos
- 하드웨어추상계층
- vscode
- 맥슨모터
- arduino
- epos4
- 라이브러리
- interrupt
- hal
- 인터럽트
- GPIO
- Microcontroller
- abstraction
- STM32
- layer
- 식별자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |