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