ST에서 VSCode를 지원하므로 CMake 기반으로 확장모듈을 사용하여 VSCode에서 STM32 개발환경을 세팅하려고 한다.
STM32CubeIDE보다 VSCode가 가볍다는 장점이 있다.
1. VSCode 확장 모듈 설치
STM32 VS Code Extension

CMake

CMake Tools

Task Explorer

C/C++

2. 확장모듈로 빌드 및 디버깅을 위한 추가 프로그램 설치
STM32CubeCLT (컴파일러를 비롯하여 빌드와 디버깅에 필요한 모든 자료 포함)
STM32CubeMX

3. 확장모듈 설정
STM32 VS Code Extension 설정에서 STM32CubeCLT 폴더 PATH를 지정


(MX도 실행이 되지 않을 경우 PATH 지정)
CMake Tools 설정에서 Automatic Reconfigure 옵션 해제 - VSCode가 실행될 때 자동으로 configure하므로 끄는 것 추천

4. CubeMX에서 CMake 프로젝트 생성
stm32f411re MCU로 생성 후 저장

Project Manager에서 Toolchain CMake로 변경 후 Generate Code

stm32f411-cmake\cmake\stm32cubemx\CMakeList.txt → CubeMX 설정을 변경했을 때 수정되는 파일
stm32f411-cmake\CMakeList.txt → 옵션을 바꾸거나 소스코드 추가할 때 수정 가능한 파일

5. VSCode에서 CMake 프로젝트 Import
생성된 STM32 VS CODE EXTENSION에서 Import CMake project → C:\workspace\STM32\stm32f411-cmake → Import project

6. CMake Configure 과정 진행
상단 클릭 → Show and Run Commands → CMake: Configure → preset 선택화면 뜸 → 그냥 debug

빌드를 할 수 있는 상태까지 완료
7. 빌드
.vscode\tasks.json 파일에 빌드가 정의되어 있다.
아까 설치한 Task Explorer 확장모듈에서 CMake: clean rebuild

8. 디버그
Build & Debug Microcontroller - ST-Link

(문제 발생) st-link: gdb server quit unexpectedly. see gdb-server output in terminal tab for more details.

STM32CubeIDE를 설치하고 실행한 후 VSCode에서 다시 실행했더니 해결됐다. (IDE와 VScode 두 곳에서 모두 GDB Server 허용 관련 경고창 뜸)



9. compileCommands 옵션 추가
CMake 프로젝트를 빌드할 때 기본적으로 compile_commands.json 파일이 생성되도록 옵션이 추가되어 있다. compile_commands.json 파일은 C파일에서 참조하고 있는 헤더파일에 대한 정보가 다 포함되어 있다.

HAL드라이버 코드를 보면 파일 위치를 못 찾는 것을 확인할 수 있다. 원래 F12로 해당 헤더파일로 이동해야 하지만 못 가는 불편함이 있다. 따라서 정보를 갖고 있는 compile_commands.json 파일 옵션을 추가해야 한다.

.vscode 밑에 c_cpp_properties.json 파일 아래에 compileCommands 옵션을 추가하고 리빌드한다.

해당 파일은 빌드 리스트에 포함되어 있지 않아 빨간 줄로 계속 뜬다.

cmake/stm32cubemx/CMakeLists.txt 에 빌드 리스트가 있고, 여기 해당되는 파일에 가 보면 빨간 줄이 없는 걸 확인할 수 있다.


<참고>
https://blog.naver.com/chcbaram/223573759149
STM32 VS Code Extension 개발환경(CMake)
ST에서 VSCode에 플러그인을 공식적으로 지원한지는 좀 되었습니다. 최근에 CubeMX에서 생성하는 ...
blog.naver.com
'STM32' 카테고리의 다른 글
| [STM32 프로젝트] 스마트 도어락 (2) | 2024.10.17 |
|---|