[{"data":1,"prerenderedAt":1374},["ShallowReactive",2],{"wiki-page-/wiki/2026-04-17-stm32cubeide-vscode-huan-jing-da-jian/ch3-linux":3,"wiki-doc-items-/wiki/2026-04-17-stm32cubeide-vscode-huan-jing-da-jian/ch3-linux":1356},{"id":4,"title":5,"body":6,"chapter":1342,"chapterSort":1343,"date":1344,"description":46,"docKey":1345,"docRoot":1346,"docTitle":1347,"extension":1348,"isWikiDoc":752,"isWikiIndex":1349,"layout":1350,"meta":1351,"navigation":752,"path":1352,"seo":1353,"stem":1354,"wikiDepth":102,"__hash__":1355},"content/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},"3",3000000,"2026-04-17","2026-04-17-stm32cubeide-vscode-huan-jing-da-jian","/wiki/2026-04-17-stm32cubeide-vscode-huan-jing-da-jian","STM32CubeIDE VScode环境搭建","md",false,null,{},"/wiki/2026-04-17-stm32cubeide-vscode-huan-jing-da-jian/ch3-linux",{"title":5,"description":46},"wiki/2026-04-17-STM32CubeIDE-VScode环境搭建/ch3-Linux","Uy98RM1O412ncv47y0nfOcT46917iktvkJ3Ia3m6oOA",[1357,1363,1369,1370],{"path":1358,"stem":1359,"title":1360,"date":1344,"chapter":1361,"chapterSort":1362,"docKey":1345,"docRoot":1346,"docTitle":1347,"isWikiDoc":752,"isWikiIndex":1349},"/wiki/2026-04-17-stm32cubeide-vscode-huan-jing-da-jian/ch1-jian-jie","wiki/2026-04-17-STM32CubeIDE-VScode环境搭建/ch1-简介","简介","1",1000000,{"path":1364,"stem":1365,"title":1366,"date":1344,"chapter":1367,"chapterSort":1368,"docKey":1345,"docRoot":1346,"docTitle":1347,"isWikiDoc":752,"isWikiIndex":1349},"/wiki/2026-04-17-stm32cubeide-vscode-huan-jing-da-jian/ch2-can-kao-shi-pin","wiki/2026-04-17-STM32CubeIDE-VScode环境搭建/ch2-参考视频","参考视频","2",2000000,{"path":1352,"stem":1354,"title":5,"date":1344,"chapter":1342,"chapterSort":1343,"docKey":1345,"docRoot":1346,"docTitle":1347,"isWikiDoc":752,"isWikiIndex":1349},{"path":1346,"stem":1371,"title":1372,"date":1344,"chapter":1350,"chapterSort":1373,"docKey":1345,"docRoot":1346,"docTitle":1347,"isWikiDoc":752,"isWikiIndex":752},"wiki/2026-04-17-STM32CubeIDE-VScode环境搭建/index","STM32CubeIDE-VScode环境搭建",0,1778560327494]