vscode 구축 STM 32 개발 환경의 상세 한 과정
vscode
필수 플러그 인:
make 도 구 는 xPack 프로젝트 가 제공 하 는 windows-build-tools 도 구 를 직접 다운로드 할 수 있 습 니 다.
Release xPack Windows Build Tools v4.2.1-2 ・ xpack-dev-tools/windows-build-tools-xpack (github.com)
openocd
arm-none-eabi
stm32CubeMX
상술 한 소프트웨어 의 구체 적 인 설치 튜 토리 얼 인터넷 에는 상세 한 소개 자료 가 많 으 니 여 기 는 상세 하 게 소개 하지 않 겠 습 니 다.주의해 야 할 것 은 make,openocd,arm-none-eabi 등 실행 가능 한 프로그램의 경 로 를 환경 변수 에 추가 하 는 것 을 기억 하 는 것 입 니 다.
아래 장절 의 내용 은 모두 stm32Cube MX 에 따라 생 성 된 vscodestm 32f 411 Makefile 프로젝트 를 예 로 들 어 설명 합 니 다.
개발 환경 설정
실제로 코드 를 만 드 는 편집 환경 으로 keil 에서 코드 편집 과 코드 보완 등 과 유사 한 기능 을 실현 합 니 다.vscode 를 통 해 vscode 열기stm32f 411 폴 더 이후 에 사실은 편집 과 코드 보완 기능(필수 플러그 인 이 설치 되 어 있 는 전제)을 갖 추 었 습 니 다.다만 오류 가 발생 하 는 파도 선 이 많 을 뿐 입 니 다.이 럴 때 원본 파일 의 각종 오류 알림 을 해결 하기 위해
c_cpp_properties.json
파일 을 설정 해 야 합 니 다.알림**
uint32_t
이 정의 되 지 않 은 유형 이 라면*defines
에 추가__GNUC__
c_cpp_properties.json
파일:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_HAL_DRIVER", //
"STM32F411xE", //
"__GNUC__" //
],
// "compilerPath": "C:\\Program Files\\LLVM\\bin\\clang.exe",
"compilerPath": "C:/Program Files (x86)/GNU Tools Arm Embedded/7 2018-q2-update/bin/arm-none-eabi-gcc.exe",
"cStandard": "c17",
"cppStandard": "c++14",
// "intelliSenseMode": "windows-clang-x64"
"intelliSenseMode": "gcc-arm"
}
],
"version": 4
}
컴 파일 다운로드 기능 설정새 파일
task.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make",
"args": [
"-j4"
],
"group": { //group build , Ctrl+Shift+B
"kind": "build",
"isDefault": true
},
"problemMatcher":[
"$gcc"
]
},
{
"label": "clean",
"type": "shell",
"command": "make",
"args": [
"clean"
]
},
{
"label": "flash - ST-Link", // makefile
"type": "shell",
"command": "make flash",
"problemMatcher": []
},
{
"label": "download", //
"type": "shell",
"command": "openocd",
"args": [
"-f",
"interface/stlink-v2.cfg",
"-f",
"target/stm32f4x.cfg",
"-c",
"program build/vscode_stm32f411.elf verify reset exit" //TODO: ${workspaceFolder}
],
"dependsOn":"build", //download , download build
},
{
"label": "reset", //
"type": "shell",
"command":"openocd",
"args": [
"-f",
"interface/stlink-v2.cfg",
"-f",
"target/stm32f4x.cfg",
"-c init",
"-c reset",
"-c exit",
],
"problemMatcher": []
},
{
"label": "halt", //
"type": "shell",
"command":"openocd",
"args": [
"-f",
"interface/stlink-v2.cfg",
"-f",
"target/stm32f4x.cfg",
"-c init",
"-c halt",
"-c exit",
],
"problemMatcher": []
},
{
"label": "run", //
"type": "shell",
"command":"openocd",
"args": [
"-f",
"interface/stlink-v2.cfg",
"-f",
"target/stm32f4x.cfg",
"-c init",
"-c resume",
"-c exit",
],
"problemMatcher": []
},
]
}
build
작업 은 컴 파일 프로젝트 에 사 용 됩 니 다.(실질 적 으로 Makefile 파일 make 를 실행 합 니 다)clean
컴 파일 로 생 성 된 중간 파일 을 제거 하 는 작업(실질 적 으로 Makefile 파일 의 make clean 을 실행 하 는 것)flash - ST-Link
임 무 는 STM 32 칩 에 코드 를 다운로드 하 는 데 사 용 됩 니 다.여 기 는 Makefile 에 플래시 위조 목 표를 추가 해 야 합 니 다.위조 목표 플래시 는 다음 과 같 습 니 다.
#flash the stm32
OPENOCD := openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg
FIRMWARE = $(BUILD_DIR)/vscode_stm32f411.elf
flash:
$(OPENOCD) -c init \
-c 'reset halt' \
-c 'flash write_image erase $(FIRMWARE)' \
-c 'reset run' \
-c exit
download
임 무 는 STM 32 칩 에 코드 를 다운로드 하 는 데 사 용 됩 니 다.여 기 는 완전히tasks.json
파일 에서 이 루어 집 니 다(openocd 를 통 해 대상 파일 을 다운로드 합 니 다).reset
퀘 스 트 는 목표 판 프로그램 을 복원 하 는 데 사 용 됩 니 다.halt
퀘 스 트 는 타 겟 보드 프로그램 을 걸 때 사용 합 니 다.run
작업 은 걸 려 있 는 대상 프로그램 을 실행 하 는 데 사 용 됩 니 다.디 버 깅 기능 설정
추가
launch.json
파일 설정 디 버 깅 환경
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Cortex Debug",
"cwd": "${workspaceRoot}",
"executable": "${workspaceRoot}/build/vscode_stm32f411.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd",
"device": "STM32F411xx",
"interface": "swd",
"configFiles": [
"${workspaceRoot}/openocd.cfg"
],
"runToMain": true,
"showDevDebugTimestamps": true,
"svdFile": "${workspaceRoot}/STM32F411xx.svd", // svd
}
]
}
작업 공간 디 렉 터 리 에openocd.cfg
파일 을 추가 합 니 다.파일 내용 은 다음 과 같 습 니 다.
source [find interface/stlink-v2.cfg]
source [find target/stm32f4x_stlink.cfg]
F5 줄 디 버 깅 을 실행 할 수 있 습 니 다.주의:여 기 는
make
명령 을 실행 한 후에 야 디 버 깅 을 할 수 있 습 니 다.그렇지 않 으 면 정상적으로 디 버 깅 할 수 없습니다.디 버 깅 을 실행 할 때마다 프로젝트 가 최신 으로 컴 파일 되 었 는 지 확인 하기 위해
launch.json
파일 에"preLaunchTask": "build"
설정 을 추가 할 수 있 습 니 다.preLaunchTask
디 버 깅 전에 실 행 된 작업 을 표시 합 니 다.build 는task.json
파일 에 build 라 고 표 시 된 작업(주의launch.json
파일 에 있 는 작업 이름 이task.json
파일 에 있 는 태그 이름과 일치 해 야 합 니 다.매번 디 버 깅 이 끝 난 후에 도 타 겟 보드 의 프로그램 이 계속 실 행 될 수 있 도록
launch.json
파일 에"postDebugTask": "run"
설정 을 추가 할 수 있 습 니 다.디 버 깅 이 끝 난 후에task.json
파일 의run
임 무 를 수행 하여 타 겟 보드 의 프로그램 이 계속 실 행 될 수 있 도록 합 니 다.전체
launch.json
파일 은 다음 과 같 습 니 다.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Cortex Debug",
"cwd": "${workspaceRoot}",
"executable": "${workspaceRoot}/build/vscode_stm32f411.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd", // GDB server
// "device": "STM32F411xx", //
"interface": "swd",
"configFiles": [
// "${workspaceRoot}/openocd.cfg"
"interface/stlink-v2.cfg",
"target/stm32f4x.cfg"
],
"runToMain": true,
"showDevDebugTimestamps": true,
"svdFile": "${workspaceRoot}/STM32F411xx.svd",
"preLaunchTask": "build", // ( )
"postDebugTask": "run", // ,
}
]
}
세심 한 학생 들 은 이곳 의launch.json
문서 와 위의 이 문서 가configFiles
위치 에서 도 차이 가 있다 는 것 을 알 게 될 것 이다.이 방법 을 사용 하면 작업 폴 더 디 렉 터 리 에 새 파일
openocd.cfg
을 만 들 지 않 아 도 됩 니 다.그러나 명령 행 에 openocd 를 직접 입력 하면 오류 가 발생 합 니 다.작은 지식 포인트:터미널 에서 시작
openocd
할 때 현재 디 렉 터 리 에서openocd.cfg
파일 을 설정 파일 로 자동 으로 찾 습 니 다.vscode 가 STM 32 개발 환경 을 구축 하 는 상세 한 과정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 vscode 구축 STM 32 개발 환경 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React Typescript 스니펫새로운 구성 요소를 생성할 때 동일한 코드를 입력하는 데 지쳤다면 VS Code가 제공하는 멋진 솔루션인 코드 스니펫 🔥이 있습니다. 다음은 Typescript로 React 구성 요소를 만들기 위한 두 가지 스니펫입...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.