[{"data":1,"prerenderedAt":1391},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux":1360,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux":1375,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux":1390},{"id":4,"title":5,"body":6,"canonicalPath":1341,"chapterDepth":1342,"chapterOrder":1343,"date":1344,"description":46,"docI18nKey":1345,"docKey":1346,"docRoot":1347,"docTitle":1348,"extension":1349,"i18nKey":1350,"isBlogPost":1351,"isWikiDoc":751,"isWikiIndex":1351,"layout":1352,"legacyPath":1352,"locale":1353,"localeSlug":1354,"meta":1355,"navigation":751,"path":1341,"seo":1356,"sourcePath":1357,"sourceStem":1350,"stem":1358,"wikiDepth":102,"__hash__":1359},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2026-04-17-STM32CubeIDE-VScode环境搭建\u002F0300-Linux.md","Linux",{"type":7,"value":8,"toc":1336},"minimark",[9,13,17,30,33,36,41,48,51,59,65,70,75,78,83,90,121,126,129,134,140,155,160,163,168,175,180,183,188,191,196,199,204,207,215,218,338,341,346,351,355,361,366,369,372,377,388,396,399,418,423,426,435,440,443,449,452,457,460,465,468,473,480,485,493,498,501,506,509,514,517,521,524,529,532,537,540,545,550,553,558,563,566,571,576,579,582,587,592,595,598,603,615,618,623,626,631,634,639,642,647,650,655,658,663,667,674,690,701,706,709,714,717,883,886,970,981,1010,1013,1018,1021,1026,1051,1054,1059,1062,1068,1071,1074,1078,1083,1086,1091,1095,1098,1103,1106,1113,1124,1295,1298,1302,1305,1310,1313,1318,1324,1327,1332],[10,11,12],"h3",{"id":12},"環境介紹",[14,15,16],"p",{},"本教程環境介紹：",[18,19,20,24,27],"ol",{},[21,22,23],"li",{},"系統：Fedora 43 KDE Edition Linux",[21,25,26],{},"系統內核：Linux 6.19.12-200.fc43.x86_64",[21,28,29],{},"架構：X86_64(amd64)",[14,31,32],{},"其他Linux環境也可以。",[10,34,35],{"id":35},"安裝各種軟件與環境",[37,38,40],"h4",{"id":39},"安裝cubemx","安裝CubeMX",[14,42,43],{},[44,45],"img",{"alt":46,"src":47},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage9.webp",[14,49,50],{},"下載地址：",[14,52,53],{},[54,55,56],"a",{"href":56,"rel":57},"https:\u002F\u002Fwww.st.com.cn\u002Fzh\u002Fdevelopment-tools\u002Fstm32cubemx.html",[58],"nofollow",[14,60,61],{},[62,63,64],"strong",{},"推薦下載6.14.1版本（不要下載6.15.0,這個版本有bug，不知道後續何時會修復）",[14,66,67],{},[44,68],{"alt":46,"src":69},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage10.webp",[14,71,72],{},[44,73],{"alt":46,"src":74},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage11.webp",[14,76,77],{},"解壓出來",[14,79,80],{},[44,81],{"alt":46,"src":82},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage12.webp",[14,84,85,86],{},"用root權限打開這個軟件",[87,88,89],"code",{},"SetupSTM32CubeMX-6.15.0",[91,92,96],"pre",{"className":93,"code":94,"language":95,"meta":46,"style":46},"language-cpp shiki shiki-themes github-light github-dark","sudo .\u002FSetupSTM32CubeMX-6.15.0\n","cpp",[87,97,98],{"__ignoreMap":46},[99,100,103,107,111,114,117],"span",{"class":101,"line":102},"line",1,[99,104,106],{"class":105},"sVt8B","sudo .",[99,108,110],{"class":109},"szBVR","\u002F",[99,112,113],{"class":105},"SetupSTM32CubeMX",[99,115,116],{"class":109},"-",[99,118,120],{"class":119},"s7hpK","6.15.0\n",[14,122,123],{},[44,124],{"alt":46,"src":125},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage13.webp",[14,127,128],{},"在新彈出的界面一直點下一步就行，安裝結束後出現如下圖就成功了。",[14,130,131],{},[44,132],{"alt":46,"src":133},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage14.webp",[14,135,136,139],{},[87,137,138],{},"\u002Fusr\u002Flocal\u002FSTMicroelectronics\u002FSTM32Cube\u002FSTM32CubeMX","進入這個文件夾，然後打開終端輸入",[91,141,143],{"className":93,"code":142,"language":95,"meta":46,"style":46},".\u002FSTM32CubeMX\n",[87,144,145],{"__ignoreMap":46},[99,146,147,150,152],{"class":101,"line":102},[99,148,149],{"class":105},".",[99,151,110],{"class":109},[99,153,154],{"class":105},"STM32CubeMX\n",[14,156,157],{},[44,158],{"alt":46,"src":159},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage15.webp",[14,161,162],{},"點擊Help",[14,164,165],{},[44,166],{"alt":46,"src":167},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage16.webp",[14,169,170,171,174],{},"選",[87,172,173],{},"Manage embedded software packages","，把STM32F1，F4，H7的第一個最新的固件勾上。",[14,176,177],{},[44,178],{"alt":46,"src":179},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage17.webp",[14,181,182],{},"點install",[14,184,185],{},[44,186],{"alt":46,"src":187},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage18.webp",[14,189,190],{},"登陸上賬號",[14,192,193],{},[44,194],{"alt":46,"src":195},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage19.webp",[14,197,198],{},"然後等下載和安裝完",[14,200,201],{},[44,202],{"alt":46,"src":203},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage20.webp",[14,205,206],{},"下載好就行了。",[14,208,209,210,214],{},"接下來可以把CubeMX應用配置一個桌面快捷方式等可以快速打開，教程詳見",[54,211,213],{"href":212},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0600-qi-ta-ke-xuan-pei-zhi#appimage","Vinci機器人隊Linux入門教程","的Appimage章節，可以用ctrl+F快速定位該章節。",[14,216,217],{},"桌面快捷方式如下：",[91,219,223],{"className":220,"code":221,"language":222,"meta":46,"style":46},"language-bash shiki shiki-themes github-light github-dark","[Desktop Entry]\nName=STM32CubeMX\nExec=\u002Fusr\u002Flocal\u002FSTMicroelectronics\u002FSTM32Cube\u002FSTM32CubeMX\u002FSTM32CubeMX\nIcon=\u002Fusr\u002Flocal\u002FSTMicroelectronics\u002FSTM32Cube\u002FSTM32CubeMX\u002Fhelp\u002FSTM32CubeMX.png\nType=Application\nCategories=Development;Electronics;Embedded;\nComment=STM32CubeMX configuration and code generation tool\nTerminal=false\n","bash",[87,224,225,230,242,253,264,275,301,327],{"__ignoreMap":46},[99,226,227],{"class":101,"line":102},[99,228,229],{"class":105},"[Desktop Entry]\n",[99,231,233,236,239],{"class":101,"line":232},2,[99,234,235],{"class":105},"Name",[99,237,238],{"class":109},"=",[99,240,154],{"class":241},"sZZnC",[99,243,245,248,250],{"class":101,"line":244},3,[99,246,247],{"class":105},"Exec",[99,249,238],{"class":109},[99,251,252],{"class":241},"\u002Fusr\u002Flocal\u002FSTMicroelectronics\u002FSTM32Cube\u002FSTM32CubeMX\u002FSTM32CubeMX\n",[99,254,256,259,261],{"class":101,"line":255},4,[99,257,258],{"class":105},"Icon",[99,260,238],{"class":109},[99,262,263],{"class":241},"\u002Fusr\u002Flocal\u002FSTMicroelectronics\u002FSTM32Cube\u002FSTM32CubeMX\u002Fhelp\u002FSTM32CubeMX.png\n",[99,265,267,270,272],{"class":101,"line":266},5,[99,268,269],{"class":105},"Type",[99,271,238],{"class":109},[99,273,274],{"class":241},"Application\n",[99,276,278,281,283,286,289,293,295,298],{"class":101,"line":277},6,[99,279,280],{"class":105},"Categories",[99,282,238],{"class":109},[99,284,285],{"class":241},"Development",[99,287,288],{"class":105},";",[99,290,292],{"class":291},"sScJk","Electronics",[99,294,288],{"class":105},[99,296,297],{"class":291},"Embedded",[99,299,300],{"class":105},";\n",[99,302,304,307,309,312,315,318,321,324],{"class":101,"line":303},7,[99,305,306],{"class":105},"Comment",[99,308,238],{"class":109},[99,310,311],{"class":241},"STM32CubeMX",[99,313,314],{"class":291}," configuration",[99,316,317],{"class":241}," and",[99,319,320],{"class":241}," code",[99,322,323],{"class":241}," generation",[99,325,326],{"class":241}," tool\n",[99,328,330,333,335],{"class":101,"line":329},8,[99,331,332],{"class":105},"Terminal",[99,334,238],{"class":109},[99,336,337],{"class":241},"false\n",[14,339,340],{},"根據教程做，就可以實現這種效果啦。",[14,342,343],{},[44,344],{"alt":46,"src":345},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage21.webp",[14,347,348],{},[44,349],{"alt":46,"src":350},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage22.webp",[37,352,354],{"id":353},"安裝vscode","安裝VScode",[14,356,357],{},[54,358,359],{"href":359,"rel":360},"https:\u002F\u002Fcode.visualstudio.com\u002FDownload",[58],[14,362,363],{},[44,364],{"alt":46,"src":365},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage23.webp",[14,367,368],{},"如果是debian系下載deb,如果是rhel系下載rpm.",[14,370,371],{},"下載完之後，點擊瀏覽器，找到這個安裝包的文件夾，並在該路徑打開終端。",[14,373,374],{},[44,375],{"alt":46,"src":376},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage24.webp",[14,378,379,380,383,384,387],{},"Debian系：輸入",[87,381,382],{},"sudo apt install .\u002Fcode","然後按",[87,385,386],{},"tab","按鍵補齊文件名，回車。",[14,389,390,391,383,394,387],{},"RHEL系：輸入",[87,392,393],{},"sudo dnf install .\u002Fcode",[87,395,386],{},[14,397,398],{},"例如補齊後的：",[91,400,402],{"className":220,"code":401,"language":222,"meta":46,"style":46},"sudo dnf install .\u002Fcode-1.102.1-1752598767.el8.x86_64.rpm\n",[87,403,404],{"__ignoreMap":46},[99,405,406,409,412,415],{"class":101,"line":102},[99,407,408],{"class":291},"sudo",[99,410,411],{"class":241}," dnf",[99,413,414],{"class":241}," install",[99,416,417],{"class":241}," .\u002Fcode-1.102.1-1752598767.el8.x86_64.rpm\n",[14,419,420],{},[44,421],{"alt":46,"src":422},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage25.webp",[14,424,425],{},"然後打開VScode，在終端輸入下面的命令",[91,427,429],{"className":220,"code":428,"language":222,"meta":46,"style":46},"code\n",[87,430,431],{"__ignoreMap":46},[99,432,433],{"class":101,"line":102},[99,434,428],{"class":291},[14,436,437],{},[44,438],{"alt":46,"src":439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage26.webp",[14,441,442],{},"然後可以配置一個環境單獨給CubeIDE插件使用，避免和默認環境衝突。",[14,444,445],{},[44,446],{"alt":447,"src":448},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420070033.webp",[14,450,451],{},"進行一些設置，按我的來就可以",[14,453,454],{},[44,455],{"alt":447,"src":456},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420416232.webp",[14,458,459],{},"選中STM32",[14,461,462],{},[44,463],{"alt":447,"src":464},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420490177.webp",[14,466,467],{},"然後安裝一些插件",[14,469,470],{},[44,471],{"alt":46,"src":472},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage27.webp",[14,474,475,476,479],{},"找到下面這個",[87,477,478],{},"STM32CubeIDE for Visual Studio Code","插件安裝",[14,481,482],{},[44,483],{"alt":447,"src":484},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420601935.webp",[14,486,487,488,492],{},"右邊彈這個提示要選擇安裝（要有良好的",[489,490,491],"em",{},"科學網絡","）",[14,494,495],{},[44,496],{"alt":447,"src":497},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420688705.webp",[14,499,500],{},"緊接着會進行一些環境的安裝",[14,502,503],{},[44,504],{"alt":447,"src":505},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420710467.webp",[14,507,508],{},"也可以再安裝一些其他的插件，比如Codex等插件\n這些看你自己啦",[14,510,511],{},[44,512],{"alt":447,"src":513},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420944068.webp",[10,515,516],{"id":516},"工程創建與測試",[37,518,520],{"id":519},"使用cubemx創建工程","使用CubeMX創建工程",[14,522,523],{},"點擊進入單片機挑選的按鈕",[14,525,526],{},[44,527],{"alt":46,"src":528},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage60.webp",[14,530,531],{},"搜索對應芯片，並雙擊對應芯片選項。",[14,533,534],{},[44,535],{"alt":46,"src":536},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage61.webp",[14,538,539],{},"進行一些配置，以下都是很基礎的東西，你在看這個視頻前肯定都會了",[14,541,542],{},[44,543],{"alt":46,"src":544},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage62.webp",[14,546,547],{},[44,548],{"alt":46,"src":549},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage63.webp",[14,551,552],{},"隨便開一個IO用來測試，比如LED的GPIO",[14,554,555],{},[44,556],{"alt":46,"src":557},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage64.webp",[14,559,560],{},[44,561],{"alt":46,"src":562},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage65.webp",[14,564,565],{},"FreeRTOS也要配置一下。",[14,567,568],{},[44,569],{"alt":46,"src":570},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage66.webp",[14,572,573],{},[44,574],{"alt":46,"src":575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage67.webp",[14,577,578],{},"這些文件夾也要配置好，最後Toolchain選擇CMake,編譯器選擇GCC(6.14.1及之前沒有選擇編譯器這個選項很正常)",[14,580,581],{},"（但是CubeMX6.15.0有bug,這個選擇GCC編譯器並沒有用，還需要後續自己手動選擇編譯器，以後可能會修復這個bug.）",[14,583,584],{},[44,585],{"alt":46,"src":586},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage68.webp",[14,588,589],{},[44,590],{"alt":46,"src":591},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage69.webp",[37,593,594],{"id":594},"對工程進行配置與編譯",[14,596,597],{},"在工程文件夾打開終端",[14,599,600],{},[44,601],{"alt":447,"src":602},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776421629435.webp",[91,604,606],{"className":220,"code":605,"language":222,"meta":46,"style":46},"code .\n",[87,607,608],{"__ignoreMap":46},[99,609,610,612],{"class":101,"line":102},[99,611,87],{"class":291},[99,613,614],{"class":241}," .\n",[14,616,617],{},"打開VScode後記得切到`STM32·的配置",[14,619,620],{},[44,621],{"alt":447,"src":622},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776421689049.webp",[14,624,625],{},"選擇這裏的Yes進行配置CMake預設",[14,627,628],{},[44,629],{"alt":447,"src":630},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776421794873.webp",[14,632,633],{},"一般選Debug即可",[14,635,636],{},[44,637],{"alt":447,"src":638},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776421850499.webp",[14,640,641],{},"找個C語言的代碼文件打開，然後右下角會提示安裝一個C\u002FC++插件，這個可以安裝也可以不安裝，他也帶代碼提示，但是他的代碼提示對比自帶的clangd簡直是弱爆了，如果你是新手，你不會設置代碼提示，建議按我下面的操作來，直接別裝這個插件。",[14,643,644],{},[44,645],{"alt":447,"src":646},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776422028364.webp",[14,648,649],{},"你可以測試一下代碼提示，是不是很強。",[14,651,652],{},[44,653],{"alt":447,"src":654},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776422393367.webp",[14,656,657],{},"編譯的話，圖中的這倆build都可以",[14,659,660],{},[44,661],{"alt":447,"src":662},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776423543189.webp",[37,664,666],{"id":665},"移植作者tungchiahui的標準cc工程模板","移植作者tungchiahui的標準C\u002FC++工程模板",[14,668,669,670],{},"用git clone命令克隆倉庫:",[54,671,672],{"href":672,"rel":673},"https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002FSTM32HAL_CMake_CPP_Template",[58],[91,675,677],{"className":220,"code":676,"language":222,"meta":46,"style":46},"git clone https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002FSTM32HAL_CMake_CPP_Template.git\n",[87,678,679],{"__ignoreMap":46},[99,680,681,684,687],{"class":101,"line":102},[99,682,683],{"class":291},"git",[99,685,686],{"class":241}," clone",[99,688,689],{"class":241}," https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002FSTM32HAL_CMake_CPP_Template.git\n",[14,691,692,693,700],{},"把倉庫裏的 ",[62,694,695,696,699],{},"所有文件與文件夾（除了",[87,697,698],{},".git","以外）"," 複製到我們的STM32工程的目錄裏。",[14,702,703],{},[44,704],{"alt":447,"src":705},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776427498924.webp",[14,707,708],{},"然後打開applications文件夾，在Src和Inc文件夾分別創建led_task.cpp和led_task.h，內容分別如下:",[14,710,711],{},[44,712],{"alt":46,"src":713},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage91.webp",[14,715,716],{},"led_task.cpp:",[91,718,720],{"className":93,"code":719,"language":95,"meta":46,"style":46},"#include \"led_task.h\"\n#include \"cmsis_os.h\"\n#include \"stm32f1xx_hal.h\" \n\nGPIO_PinState pinstate = GPIO_PIN_RESET;\n\nextern \"C\"\nvoid StartDefaultTask(void *argument)\n{\n  for(;;)\n  {\n    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,pinstate);\n    pinstate = (pinstate == GPIO_PIN_RESET) ? GPIO_PIN_SET : GPIO_PIN_RESET;\n    osDelay(500);\n  }\n}\n",[87,721,722,730,737,747,753,763,767,775,798,804,813,819,828,856,871,877],{"__ignoreMap":46},[99,723,724,727],{"class":101,"line":102},[99,725,726],{"class":109},"#include",[99,728,729],{"class":241}," \"led_task.h\"\n",[99,731,732,734],{"class":101,"line":232},[99,733,726],{"class":109},[99,735,736],{"class":241}," \"cmsis_os.h\"\n",[99,738,739,741,744],{"class":101,"line":244},[99,740,726],{"class":109},[99,742,743],{"class":241}," \"stm32f1xx_hal.h\"",[99,745,746],{"class":105}," \n",[99,748,749],{"class":101,"line":255},[99,750,752],{"emptyLinePlaceholder":751},true,"\n",[99,754,755,758,760],{"class":101,"line":266},[99,756,757],{"class":105},"GPIO_PinState pinstate ",[99,759,238],{"class":109},[99,761,762],{"class":105}," GPIO_PIN_RESET;\n",[99,764,765],{"class":101,"line":277},[99,766,752],{"emptyLinePlaceholder":751},[99,768,769,772],{"class":101,"line":303},[99,770,771],{"class":109},"extern",[99,773,774],{"class":241}," \"C\"\n",[99,776,777,780,783,786,788,791,795],{"class":101,"line":329},[99,778,779],{"class":109},"void",[99,781,782],{"class":291}," StartDefaultTask",[99,784,785],{"class":105},"(",[99,787,779],{"class":109},[99,789,790],{"class":109}," *",[99,792,794],{"class":793},"s4XuR","argument",[99,796,797],{"class":105},")\n",[99,799,801],{"class":101,"line":800},9,[99,802,803],{"class":105},"{\n",[99,805,807,810],{"class":101,"line":806},10,[99,808,809],{"class":109},"  for",[99,811,812],{"class":105},"(;;)\n",[99,814,816],{"class":101,"line":815},11,[99,817,818],{"class":105},"  {\n",[99,820,822,825],{"class":101,"line":821},12,[99,823,824],{"class":291},"    HAL_GPIO_WritePin",[99,826,827],{"class":105},"(GPIOC,GPIO_PIN_13,pinstate);\n",[99,829,831,834,836,839,842,845,848,851,854],{"class":101,"line":830},13,[99,832,833],{"class":105},"    pinstate ",[99,835,238],{"class":109},[99,837,838],{"class":105}," (pinstate ",[99,840,841],{"class":109},"==",[99,843,844],{"class":105}," GPIO_PIN_RESET) ",[99,846,847],{"class":109},"?",[99,849,850],{"class":105}," GPIO_PIN_SET ",[99,852,853],{"class":109},":",[99,855,762],{"class":105},[99,857,859,862,864,868],{"class":101,"line":858},14,[99,860,861],{"class":291},"    osDelay",[99,863,785],{"class":105},[99,865,867],{"class":866},"sj4cs","500",[99,869,870],{"class":105},");\n",[99,872,874],{"class":101,"line":873},15,[99,875,876],{"class":105},"  }\n",[99,878,880],{"class":101,"line":879},16,[99,881,882],{"class":105},"}\n",[14,884,885],{},"led_task.h:",[91,887,889],{"className":93,"code":888,"language":95,"meta":46,"style":46},"#ifndef __LED_TASK_H_\n#define __LED_TASK_H_\n\n#ifdef __cplusplus\nextern \"C\"\n{\n#endif\n\n#include \"cpp_interface.h\"\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n",[87,890,891,899,906,910,918,924,928,933,937,944,948,954,958,962,966],{"__ignoreMap":46},[99,892,893,896],{"class":101,"line":102},[99,894,895],{"class":109},"#ifndef",[99,897,898],{"class":291}," __LED_TASK_H_\n",[99,900,901,904],{"class":101,"line":232},[99,902,903],{"class":109},"#define",[99,905,898],{"class":291},[99,907,908],{"class":101,"line":244},[99,909,752],{"emptyLinePlaceholder":751},[99,911,912,915],{"class":101,"line":255},[99,913,914],{"class":109},"#ifdef",[99,916,917],{"class":291}," __cplusplus\n",[99,919,920,922],{"class":101,"line":266},[99,921,771],{"class":109},[99,923,774],{"class":241},[99,925,926],{"class":101,"line":277},[99,927,803],{"class":105},[99,929,930],{"class":101,"line":303},[99,931,932],{"class":109},"#endif\n",[99,934,935],{"class":101,"line":329},[99,936,752],{"emptyLinePlaceholder":751},[99,938,939,941],{"class":101,"line":800},[99,940,726],{"class":109},[99,942,943],{"class":241}," \"cpp_interface.h\"\n",[99,945,946],{"class":101,"line":806},[99,947,752],{"emptyLinePlaceholder":751},[99,949,950,952],{"class":101,"line":815},[99,951,914],{"class":109},[99,953,917],{"class":291},[99,955,956],{"class":101,"line":821},[99,957,882],{"class":105},[99,959,960],{"class":101,"line":830},[99,961,932],{"class":109},[99,963,964],{"class":101,"line":858},[99,965,752],{"emptyLinePlaceholder":751},[99,967,968],{"class":101,"line":873},[99,969,932],{"class":109},[14,971,972,973,976,977,980],{},"然後打開",[87,974,975],{},"cmake\u002Fuser","文件夾下的",[87,978,979],{},"CMakeLists.txt","，把剛才新建的led_task.cpp添加上去。",[14,982,983,984,987,988,990,991,993,994,996,997,999,1000,1002,1003,1005,1006,1009],{},"詳細介紹（可以不看）：這裏的",[87,985,986],{},"cmake\u002Fstm32cubemx","下的",[87,989,979],{},"是被CubeMX管理的，你重新用CubeMX生成新代碼後，這個文件裏的東西會被覆蓋。而工作區根目錄下的",[87,992,979],{},"是不會被重新覆蓋的，而且給我們留了一些區域加源文件和頭文件，但是這樣會讓這個文件太過於嘈雜。所以我們選擇新建一個user文件夾，然後在這裏面弄一個",[87,995,979],{},"，再用頂層",[87,998,979],{},"去加載這個子",[87,1001,979],{},"，這個子",[87,1004,979],{},"方便咱們修改，文件結構也更加明顯。（這些都不需要咱們自己創建，我已經給創建到",[62,1007,1008],{},"模板","裏了，你在上面複製的時候已經複製過來了）",[14,1011,1012],{},"像下圖這樣加上cpp文件。",[14,1014,1015],{},[44,1016],{"alt":46,"src":1017},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage92.webp",[14,1019,1020],{},"然後要去最頂層的CMakeLists.txt里加上這句話來引用我們自己的CMakeLists.txt。",[14,1022,1023],{},[44,1024],{"alt":46,"src":1025},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage93.webp",[91,1027,1031],{"className":1028,"code":1029,"language":1030,"meta":46,"style":46},"language-cmake shiki shiki-themes github-light github-dark","\n# Add USER generated sources\nadd_subdirectory(cmake\u002Fuser)\n","cmake",[87,1032,1033,1037,1043],{"__ignoreMap":46},[99,1034,1035],{"class":101,"line":102},[99,1036,752],{"emptyLinePlaceholder":751},[99,1038,1039],{"class":101,"line":232},[99,1040,1042],{"class":1041},"sJ8bj","# Add USER generated sources\n",[99,1044,1045,1048],{"class":101,"line":244},[99,1046,1047],{"class":109},"add_subdirectory",[99,1049,1050],{"class":105},"(cmake\u002Fuser)\n",[14,1052,1053],{},"大功告成，編譯一次試試。可以看到下圖，那些新加的文件都編譯上了。",[14,1055,1056],{},[44,1057],{"alt":447,"src":1058},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776429160105.webp",[37,1060,1061],{"id":1061},"下載程序到板子",[14,1063,1064,1065],{},"下載之前首先要先配置 ",[1066,1067],"br",{},[14,1069,1070],{},"ST-Link就不用配置了，直接開始debug就完事了。",[14,1072,1073],{},"而Jlink等是需要配置的。",[1075,1076,1077],"h5",{"id":1077},"配置調試器",[1079,1080,1082],"h6",{"id":1081},"st-link","ST-Link",[14,1084,1085],{},"無需任何配置",[14,1087,1088],{},[44,1089],{"alt":447,"src":1090},"\u002Fimages\u002F2026-04-17-STM32CubeIDE-VScode%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA\u002F1776435639185.png",[1079,1092,1094],{"id":1093},"jlink","JLink",[14,1096,1097],{},"先安裝jlink-gdbserver的bundle，如下圖所示：",[14,1099,1100],{},[44,1101],{"alt":447,"src":1102},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776431910132.webp",[14,1104,1105],{},"然後還要配置下launch：",[14,1107,1108,1109],{},"問題解決方案：",[54,1110,1111],{"href":1111,"rel":1112},"https:\u002F\u002Fcommunity.st.com\u002Ft5\u002Fstm32cubeide-for-visual-studio\u002Fstm32h7a3vg-debugging-with-j-link-under-vscode\u002Fm-p\u002F826188#M960",[58],[14,1114,1115,1116,1119,1120,1123],{},"在",[87,1117,1118],{},".vscode","文件夾下創建一個",[87,1121,1122],{},"launch.json","，然後輸入以下內容：",[91,1125,1129],{"className":1126,"code":1127,"language":1128,"meta":46,"style":46},"language-json shiki shiki-themes github-light github-dark","{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"type\": \"jlinkgdbtarget\",\n            \"request\": \"launch\",\n            \"name\": \"STM32Cube: STM32 Launch JLink GDB Server\",\n            \"origin\": \"snippet\",\n            \"cwd\": \"${workspaceFolder}\",\n            \"preBuild\": \"${command:st-stm32-ide-debug-launch.build}\",\n            \"runEntry\": \"main\",\n            \"imagesAndSymbols\": [\n                {\n                    \"imageFileName\": \"${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}\"\n                }\n            ]\n        }\n    ]\n}\n","json",[87,1130,1131,1135,1149,1157,1162,1174,1186,1198,1210,1222,1234,1246,1253,1258,1268,1273,1278,1284,1290],{"__ignoreMap":46},[99,1132,1133],{"class":101,"line":102},[99,1134,803],{"class":105},[99,1136,1137,1140,1143,1146],{"class":101,"line":232},[99,1138,1139],{"class":866},"    \"version\"",[99,1141,1142],{"class":105},": ",[99,1144,1145],{"class":241},"\"0.2.0\"",[99,1147,1148],{"class":105},",\n",[99,1150,1151,1154],{"class":101,"line":244},[99,1152,1153],{"class":866},"    \"configurations\"",[99,1155,1156],{"class":105},": [\n",[99,1158,1159],{"class":101,"line":255},[99,1160,1161],{"class":105},"        {\n",[99,1163,1164,1167,1169,1172],{"class":101,"line":266},[99,1165,1166],{"class":866},"            \"type\"",[99,1168,1142],{"class":105},[99,1170,1171],{"class":241},"\"jlinkgdbtarget\"",[99,1173,1148],{"class":105},[99,1175,1176,1179,1181,1184],{"class":101,"line":277},[99,1177,1178],{"class":866},"            \"request\"",[99,1180,1142],{"class":105},[99,1182,1183],{"class":241},"\"launch\"",[99,1185,1148],{"class":105},[99,1187,1188,1191,1193,1196],{"class":101,"line":303},[99,1189,1190],{"class":866},"            \"name\"",[99,1192,1142],{"class":105},[99,1194,1195],{"class":241},"\"STM32Cube: STM32 Launch JLink GDB Server\"",[99,1197,1148],{"class":105},[99,1199,1200,1203,1205,1208],{"class":101,"line":329},[99,1201,1202],{"class":866},"            \"origin\"",[99,1204,1142],{"class":105},[99,1206,1207],{"class":241},"\"snippet\"",[99,1209,1148],{"class":105},[99,1211,1212,1215,1217,1220],{"class":101,"line":800},[99,1213,1214],{"class":866},"            \"cwd\"",[99,1216,1142],{"class":105},[99,1218,1219],{"class":241},"\"${workspaceFolder}\"",[99,1221,1148],{"class":105},[99,1223,1224,1227,1229,1232],{"class":101,"line":806},[99,1225,1226],{"class":866},"            \"preBuild\"",[99,1228,1142],{"class":105},[99,1230,1231],{"class":241},"\"${command:st-stm32-ide-debug-launch.build}\"",[99,1233,1148],{"class":105},[99,1235,1236,1239,1241,1244],{"class":101,"line":815},[99,1237,1238],{"class":866},"            \"runEntry\"",[99,1240,1142],{"class":105},[99,1242,1243],{"class":241},"\"main\"",[99,1245,1148],{"class":105},[99,1247,1248,1251],{"class":101,"line":821},[99,1249,1250],{"class":866},"            \"imagesAndSymbols\"",[99,1252,1156],{"class":105},[99,1254,1255],{"class":101,"line":830},[99,1256,1257],{"class":105},"                {\n",[99,1259,1260,1263,1265],{"class":101,"line":858},[99,1261,1262],{"class":866},"                    \"imageFileName\"",[99,1264,1142],{"class":105},[99,1266,1267],{"class":241},"\"${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}\"\n",[99,1269,1270],{"class":101,"line":873},[99,1271,1272],{"class":105},"                }\n",[99,1274,1275],{"class":101,"line":879},[99,1276,1277],{"class":105},"            ]\n",[99,1279,1281],{"class":101,"line":1280},17,[99,1282,1283],{"class":105},"        }\n",[99,1285,1287],{"class":101,"line":1286},18,[99,1288,1289],{"class":105},"    ]\n",[99,1291,1293],{"class":101,"line":1292},19,[99,1294,882],{"class":105},[14,1296,1297],{},"完事",[1075,1299,1301],{"id":1300},"進行調試這裏linux可能會遇到一些usb權限的問題請自行解決","進行調試：(這裏linux可能會遇到一些usb權限的問題，請自行解決)",[14,1303,1304],{},"如果你是STLink應該是下圖所示：",[14,1306,1307],{},[44,1308],{"alt":447,"src":1309},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776431995915.webp",[14,1311,1312],{},"如果你是JLink應該是下圖所示：",[14,1314,1315],{},[44,1316],{"alt":447,"src":1317},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776432039560.webp",[14,1319,1320,1321],{},"然後會出現這個條，他會下載程序到板子\n",[44,1322],{"alt":447,"src":1323},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776432143180.webp",[14,1325,1326],{},"然後就成功下載了程序並進入了Debug",[14,1328,1329],{},[44,1330],{"alt":447,"src":1331},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776432211211.webp",[1333,1334,1335],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":46,"searchDepth":232,"depth":232,"links":1337},[1338,1339,1340],{"id":12,"depth":244,"text":12},{"id":35,"depth":244,"text":35},{"id":516,"depth":244,"text":516},"\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux",0,"0300","2026-04-17","wiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian","zh-hk:2026-04-17-stm32cubeide-vscode-huan-jing-da-jian","\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian","STM32CubeIDE VScode环境搭建","md","wiki\u002F2026-04-17-STM32CubeIDE-VScode环境搭建\u002F0300-Linux",false,null,"zh-HK","zh-hk",{},{"title":5,"description":46},"\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux","_i18n\u002Fzh-hk\u002Fwiki\u002F2026-04-17-STM32CubeIDE-VScode环境搭建\u002F0300-Linux","LrkVVRmLyvQIE9HLycXJwh4EeV1UpIYewRZpbIT0xyM",[1361,1366,1371,1372],{"path":1362,"stem":1363,"title":1364,"date":1344,"chapterOrder":1365,"chapterDepth":1342,"docKey":1346,"docRoot":1347,"docTitle":1348,"isWikiDoc":751,"isWikiIndex":1351},"\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0100-jian-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2026-04-17-STM32CubeIDE-VScode环境搭建\u002F0100-简介","簡介","0100",{"path":1367,"stem":1368,"title":1369,"date":1344,"chapterOrder":1370,"chapterDepth":1342,"docKey":1346,"docRoot":1347,"docTitle":1348,"isWikiDoc":751,"isWikiIndex":1351},"\u002Fzh-hk\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0200-can-kao-shi-pin","_i18n\u002Fzh-hk\u002Fwiki\u002F2026-04-17-STM32CubeIDE-VScode环境搭建\u002F0200-参考视频","參考視頻","0200",{"path":1341,"stem":1358,"title":5,"date":1344,"chapterOrder":1343,"chapterDepth":1342,"docKey":1346,"docRoot":1347,"docTitle":1348,"isWikiDoc":751,"isWikiIndex":1351},{"path":1347,"stem":1373,"title":1374,"date":1344,"chapterOrder":1352,"chapterDepth":1342,"docKey":1346,"docRoot":1347,"docTitle":1348,"isWikiDoc":751,"isWikiIndex":751},"_i18n\u002Fzh-hk\u002Fwiki\u002F2026-04-17-STM32CubeIDE-VScode环境搭建\u002Findex","STM32CubeIDE-VScode環境搭建",{"variants":1376},[1377,1380,1383,1384,1387],{"path":1378,"localeSlug":1379,"i18nKey":1350},"\u002Fen-us\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux","en-us",{"path":1381,"localeSlug":1382,"i18nKey":1350},"\u002Fzh-hant\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux","zh-hant",{"path":1341,"localeSlug":1354,"i18nKey":1350},{"path":1385,"localeSlug":1386,"i18nKey":1350},"\u002Fzh-tw\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux","zh-tw",{"path":1388,"localeSlug":1389,"i18nKey":1350},"\u002Fzh-cn\u002Fwiki\u002F2026-04-17-stm32cubeide-vscode-huan-jing-da-jian\u002F0300-linux","zh-cn",[1378,1357,1381,1357,1341,1357,1385,1357,1388,1357],1784646755917]