[{"data":1,"prerenderedAt":1383},["ShallowReactive",2],{"page-/wiki/stm32cubeide-vscode":3,"surrounding-/wiki/stm32cubeide-vscode":1381},{"id":4,"title":5,"body":6,"date":1374,"description":21,"extension":1375,"meta":1376,"navigation":785,"path":1377,"seo":1378,"stem":1379,"__hash__":1380},"content/wiki/2026-04-17-STM32CubeIDE-VScode环境搭建.md","STM32CubeIDE-VScode环境搭建",{"type":7,"value":8,"toc":1365},"minimark",[9,22,26,33,36,45,49,53,56,68,71,74,79,86,89,95,100,105,110,113,118,124,155,160,163,168,174,189,194,197,202,209,214,217,222,225,230,233,238,241,250,253,373,376,381,386,390,396,401,404,407,412,423,431,434,453,458,461,470,475,478,484,487,492,495,500,503,508,515,520,527,532,535,540,543,548,551,555,558,563,566,571,574,579,584,587,592,597,600,605,610,613,616,621,626,629,632,637,649,652,657,660,665,668,673,676,681,684,689,692,697,701,708,724,735,740,743,748,751,917,920,1004,1015,1044,1047,1052,1055,1060,1085,1088,1093,1096,1102,1105,1108,1112,1117,1120,1124,1127,1132,1135,1142,1153,1324,1327,1331,1334,1339,1342,1347,1353,1356,1361],[10,11,12],"p",{},[13,14,15],"em",{},[16,17,18],"strong",{},[19,20,21],"code",{},"（本教程为2026年4月创建的，可能与以后的版本有些出入）",[23,24,25],"h2",{"id":25},"简介",[27,28,29],"ul",{},[30,31,32],"li",{},"STM32CubeIDE for Visual Studio Code(CubeMX + CMake + GCC + HAL + VSCode + Clangd) 构成了全链路嵌入式开发方案： CubeMX解决硬件配置问题，CMake统一构建流程，GCC提供编译支持，HAL库屏蔽硬件差异，VSCode+Clangd打造智能编辑器,最主要的是，该插件可以一键部署各种环境，不用像老一辈一样手动安装开发环境了，适合新鸟和老鸟。",[23,34,35],{"id":35},"参考视频",[10,37,38,39],{},"官方教程：",[40,41,42],"a",{"href":42,"rel":43},"https://www.bilibili.com/video/BV1p1XoBYEsc",[44],"nofollow",[23,46,48],{"id":47},"linux","Linux",[50,51,52],"h3",{"id":52},"环境介绍",[10,54,55],{},"本教程环境介绍：",[57,58,59,62,65],"ol",{},[30,60,61],{},"系统：Fedora 43 KDE Edition Linux",[30,63,64],{},"系统内核：Linux 6.19.12-200.fc43.x86_64",[30,66,67],{},"架构：X86_64(amd64)",[10,69,70],{},"其他Linux环境也可以。",[50,72,73],{"id":73},"安装各种软件与环境",[75,76,78],"h4",{"id":77},"安装cubemx","安装CubeMX",[10,80,81],{},[82,83],"img",{"alt":84,"src":85},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image9.webp",[10,87,88],{},"下载地址：",[10,90,91],{},[40,92,93],{"href":93,"rel":94},"https://www.st.com.cn/zh/development-tools/stm32cubemx.html",[44],[10,96,97],{},[16,98,99],{},"推荐下载6.14.1版本（不要下载6.15.0,这个版本有bug，不知道后续何时会修复）",[10,101,102],{},[82,103],{"alt":84,"src":104},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image10.webp",[10,106,107],{},[82,108],{"alt":84,"src":109},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image11.webp",[10,111,112],{},"解压出来",[10,114,115],{},[82,116],{"alt":84,"src":117},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image12.webp",[10,119,120,121],{},"用root权限打开这个软件",[19,122,123],{},"SetupSTM32CubeMX-6.15.0",[125,126,130],"pre",{"className":127,"code":128,"language":129,"meta":84,"style":84},"language-cpp shiki shiki-themes github-light github-dark","sudo ./SetupSTM32CubeMX-6.15.0\n","cpp",[19,131,132],{"__ignoreMap":84},[133,134,137,141,145,148,151],"span",{"class":135,"line":136},"line",1,[133,138,140],{"class":139},"sVt8B","sudo .",[133,142,144],{"class":143},"szBVR","/",[133,146,147],{"class":139},"SetupSTM32CubeMX",[133,149,150],{"class":143},"-",[133,152,154],{"class":153},"s7hpK","6.15.0\n",[10,156,157],{},[82,158],{"alt":84,"src":159},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image13.webp",[10,161,162],{},"在新弹出的界面一直点下一步就行，安装结束后出现如下图就成功了。",[10,164,165],{},[82,166],{"alt":84,"src":167},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image14.webp",[10,169,170,173],{},[19,171,172],{},"/usr/local/STMicroelectronics/STM32Cube/STM32CubeMX","进入这个文件夹，然后打开终端输入",[125,175,177],{"className":127,"code":176,"language":129,"meta":84,"style":84},"./STM32CubeMX\n",[19,178,179],{"__ignoreMap":84},[133,180,181,184,186],{"class":135,"line":136},[133,182,183],{"class":139},".",[133,185,144],{"class":143},[133,187,188],{"class":139},"STM32CubeMX\n",[10,190,191],{},[82,192],{"alt":84,"src":193},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image15.webp",[10,195,196],{},"点击Help",[10,198,199],{},[82,200],{"alt":84,"src":201},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image16.webp",[10,203,204,205,208],{},"选",[19,206,207],{},"Manage embedded software packages","，把STM32F1，F4，H7的第一个最新的固件勾上。",[10,210,211],{},[82,212],{"alt":84,"src":213},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image17.webp",[10,215,216],{},"点install",[10,218,219],{},[82,220],{"alt":84,"src":221},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image18.webp",[10,223,224],{},"登陆上账号",[10,226,227],{},[82,228],{"alt":84,"src":229},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image19.webp",[10,231,232],{},"然后等下载和安装完",[10,234,235],{},[82,236],{"alt":84,"src":237},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image20.webp",[10,239,240],{},"下载好就行了。",[10,242,243,244,249],{},"接下来可以把CubeMX应用配置一个桌面快捷方式等可以快速打开，教程详见",[40,245,248],{"href":246,"rel":247},"https://sdutvincirobot.feishu.cn/wiki/GIKnwJo39iREkHkFGvqcy5Osntc",[44],"Vinci机器人队Linux入门教程","的Appimage章节，可以用ctrl+F快速定位该章节。",[10,251,252],{},"桌面快捷方式如下：",[125,254,258],{"className":255,"code":256,"language":257,"meta":84,"style":84},"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",[19,259,260,265,277,288,299,310,336,362],{"__ignoreMap":84},[133,261,262],{"class":135,"line":136},[133,263,264],{"class":139},"[Desktop Entry]\n",[133,266,268,271,274],{"class":135,"line":267},2,[133,269,270],{"class":139},"Name",[133,272,273],{"class":143},"=",[133,275,188],{"class":276},"sZZnC",[133,278,280,283,285],{"class":135,"line":279},3,[133,281,282],{"class":139},"Exec",[133,284,273],{"class":143},[133,286,287],{"class":276},"/usr/local/STMicroelectronics/STM32Cube/STM32CubeMX/STM32CubeMX\n",[133,289,291,294,296],{"class":135,"line":290},4,[133,292,293],{"class":139},"Icon",[133,295,273],{"class":143},[133,297,298],{"class":276},"/usr/local/STMicroelectronics/STM32Cube/STM32CubeMX/help/STM32CubeMX.png\n",[133,300,302,305,307],{"class":135,"line":301},5,[133,303,304],{"class":139},"Type",[133,306,273],{"class":143},[133,308,309],{"class":276},"Application\n",[133,311,313,316,318,321,324,328,330,333],{"class":135,"line":312},6,[133,314,315],{"class":139},"Categories",[133,317,273],{"class":143},[133,319,320],{"class":276},"Development",[133,322,323],{"class":139},";",[133,325,327],{"class":326},"sScJk","Electronics",[133,329,323],{"class":139},[133,331,332],{"class":326},"Embedded",[133,334,335],{"class":139},";\n",[133,337,339,342,344,347,350,353,356,359],{"class":135,"line":338},7,[133,340,341],{"class":139},"Comment",[133,343,273],{"class":143},[133,345,346],{"class":276},"STM32CubeMX",[133,348,349],{"class":326}," configuration",[133,351,352],{"class":276}," and",[133,354,355],{"class":276}," code",[133,357,358],{"class":276}," generation",[133,360,361],{"class":276}," tool\n",[133,363,365,368,370],{"class":135,"line":364},8,[133,366,367],{"class":139},"Terminal",[133,369,273],{"class":143},[133,371,372],{"class":276},"false\n",[10,374,375],{},"根据教程做，就可以实现这种效果啦。",[10,377,378],{},[82,379],{"alt":84,"src":380},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image21.webp",[10,382,383],{},[82,384],{"alt":84,"src":385},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image22.webp",[75,387,389],{"id":388},"安装vscode","安装VScode",[10,391,392],{},[40,393,394],{"href":394,"rel":395},"https://code.visualstudio.com/Download",[44],[10,397,398],{},[82,399],{"alt":84,"src":400},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image23.webp",[10,402,403],{},"如果是debian系下载deb,如果是rhel系下载rpm.",[10,405,406],{},"下载完之后，点击浏览器，找到这个安装包的文件夹，并在该路径打开终端。",[10,408,409],{},[82,410],{"alt":84,"src":411},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image24.webp",[10,413,414,415,418,419,422],{},"Debian系：输入",[19,416,417],{},"sudo apt install ./code","然后按",[19,420,421],{},"tab","按键补齐文件名，回车。",[10,424,425,426,418,429,422],{},"RHEL系：输入",[19,427,428],{},"sudo dnf install ./code",[19,430,421],{},[10,432,433],{},"例如补齐后的：",[125,435,437],{"className":255,"code":436,"language":257,"meta":84,"style":84},"sudo dnf install ./code-1.102.1-1752598767.el8.x86_64.rpm\n",[19,438,439],{"__ignoreMap":84},[133,440,441,444,447,450],{"class":135,"line":136},[133,442,443],{"class":326},"sudo",[133,445,446],{"class":276}," dnf",[133,448,449],{"class":276}," install",[133,451,452],{"class":276}," ./code-1.102.1-1752598767.el8.x86_64.rpm\n",[10,454,455],{},[82,456],{"alt":84,"src":457},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image25.webp",[10,459,460],{},"然后打开VScode，在终端输入下面的命令",[125,462,464],{"className":255,"code":463,"language":257,"meta":84,"style":84},"code\n",[19,465,466],{"__ignoreMap":84},[133,467,468],{"class":135,"line":136},[133,469,463],{"class":326},[10,471,472],{},[82,473],{"alt":84,"src":474},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image26.webp",[10,476,477],{},"然后可以配置一个环境单独给CubeIDE插件使用，避免和默认环境冲突。",[10,479,480],{},[82,481],{"alt":482,"src":483},"alt text","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420070033.webp",[10,485,486],{},"进行一些设置，按我的来就可以",[10,488,489],{},[82,490],{"alt":482,"src":491},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420416232.webp",[10,493,494],{},"选中STM32",[10,496,497],{},[82,498],{"alt":482,"src":499},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420490177.webp",[10,501,502],{},"然后安装一些插件",[10,504,505],{},[82,506],{"alt":84,"src":507},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image27.webp",[10,509,510,511,514],{},"找到下面这个",[19,512,513],{},"STM32CubeIDE for Visual Studio Code","插件安装",[10,516,517],{},[82,518],{"alt":482,"src":519},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420601935.webp",[10,521,522,523,526],{},"右边弹这个提示要选择安装（要有良好的",[13,524,525],{},"科学网络","）",[10,528,529],{},[82,530],{"alt":482,"src":531},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420688705.webp",[10,533,534],{},"紧接着会进行一些环境的安装",[10,536,537],{},[82,538],{"alt":482,"src":539},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420710467.webp",[10,541,542],{},"也可以再安装一些其他的插件，比如Codex等插件\n这些看你自己啦",[10,544,545],{},[82,546],{"alt":482,"src":547},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776420944068.webp",[50,549,550],{"id":550},"工程创建与测试",[75,552,554],{"id":553},"使用cubemx创建工程","使用CubeMX创建工程",[10,556,557],{},"点击进入单片机挑选的按钮",[10,559,560],{},[82,561],{"alt":84,"src":562},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image60.webp",[10,564,565],{},"搜索对应芯片，并双击对应芯片选项。",[10,567,568],{},[82,569],{"alt":84,"src":570},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image61.webp",[10,572,573],{},"进行一些配置，以下都是很基础的东西，你在看这个视频前肯定都会了",[10,575,576],{},[82,577],{"alt":84,"src":578},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image62.webp",[10,580,581],{},[82,582],{"alt":84,"src":583},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image63.webp",[10,585,586],{},"随便开一个IO用来测试，比如LED的GPIO",[10,588,589],{},[82,590],{"alt":84,"src":591},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image64.webp",[10,593,594],{},[82,595],{"alt":84,"src":596},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image65.webp",[10,598,599],{},"FreeRTOS也要配置一下。",[10,601,602],{},[82,603],{"alt":84,"src":604},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image66.webp",[10,606,607],{},[82,608],{"alt":84,"src":609},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image67.webp",[10,611,612],{},"这些文件夹也要配置好，最后Toolchain选择CMake,编译器选择GCC(6.14.1及之前没有选择编译器这个选项很正常)",[10,614,615],{},"（但是CubeMX6.15.0有bug,这个选择GCC编译器并没有用，还需要后续自己手动选择编译器，以后可能会修复这个bug.）",[10,617,618],{},[82,619],{"alt":84,"src":620},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image68.webp",[10,622,623],{},[82,624],{"alt":84,"src":625},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image69.webp",[75,627,628],{"id":628},"对工程进行配置与编译",[10,630,631],{},"在工程文件夹打开终端",[10,633,634],{},[82,635],{"alt":482,"src":636},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776421629435.webp",[125,638,640],{"className":255,"code":639,"language":257,"meta":84,"style":84},"code .\n",[19,641,642],{"__ignoreMap":84},[133,643,644,646],{"class":135,"line":136},[133,645,19],{"class":326},[133,647,648],{"class":276}," .\n",[10,650,651],{},"打开VScode后记得切到`STM32·的配置",[10,653,654],{},[82,655],{"alt":482,"src":656},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776421689049.webp",[10,658,659],{},"选择这里的Yes进行配置CMake预设",[10,661,662],{},[82,663],{"alt":482,"src":664},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776421794873.webp",[10,666,667],{},"一般选Debug即可",[10,669,670],{},[82,671],{"alt":482,"src":672},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776421850499.webp",[10,674,675],{},"找个C语言的代码文件打开，然后右下角会提示安装一个C/C++插件，这个可以安装也可以不安装，他也带代码提示，但是他的代码提示对比自带的clangd简直是弱爆了，如果你是新手，你不会设置代码提示，建议按我下面的操作来，直接别装这个插件。",[10,677,678],{},[82,679],{"alt":482,"src":680},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776422028364.webp",[10,682,683],{},"你可以测试一下代码提示，是不是很强。",[10,685,686],{},[82,687],{"alt":482,"src":688},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776422393367.webp",[10,690,691],{},"编译的话，图中的这俩build都可以",[10,693,694],{},[82,695],{"alt":482,"src":696},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776423543189.webp",[75,698,700],{"id":699},"移植作者tungchiahui的标准cc工程模板","移植作者tungchiahui的标准C/C++工程模板",[10,702,703,704],{},"用git clone命令克隆仓库:",[40,705,706],{"href":706,"rel":707},"https://github.com/tungchiahui/STM32HAL_CMake_CPP_Template",[44],[125,709,711],{"className":255,"code":710,"language":257,"meta":84,"style":84},"git clone https://github.com/tungchiahui/STM32HAL_CMake_CPP_Template.git\n",[19,712,713],{"__ignoreMap":84},[133,714,715,718,721],{"class":135,"line":136},[133,716,717],{"class":326},"git",[133,719,720],{"class":276}," clone",[133,722,723],{"class":276}," https://github.com/tungchiahui/STM32HAL_CMake_CPP_Template.git\n",[10,725,726,727,734],{},"把仓库里的 ",[16,728,729,730,733],{},"所有文件与文件夹（除了",[19,731,732],{},".git","以外）"," 复制到我们的STM32工程的目录里。",[10,736,737],{},[82,738],{"alt":482,"src":739},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776427498924.webp",[10,741,742],{},"然后打开applications文件夹，在Src和Inc文件夹分别创建led_task.cpp和led_task.h，内容分别如下:",[10,744,745],{},[82,746],{"alt":84,"src":747},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image91.webp",[10,749,750],{},"led_task.cpp:",[125,752,754],{"className":127,"code":753,"language":129,"meta":84,"style":84},"#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",[19,755,756,764,771,781,787,797,801,809,832,838,847,853,862,890,905,911],{"__ignoreMap":84},[133,757,758,761],{"class":135,"line":136},[133,759,760],{"class":143},"#include",[133,762,763],{"class":276}," \"led_task.h\"\n",[133,765,766,768],{"class":135,"line":267},[133,767,760],{"class":143},[133,769,770],{"class":276}," \"cmsis_os.h\"\n",[133,772,773,775,778],{"class":135,"line":279},[133,774,760],{"class":143},[133,776,777],{"class":276}," \"stm32f1xx_hal.h\"",[133,779,780],{"class":139}," \n",[133,782,783],{"class":135,"line":290},[133,784,786],{"emptyLinePlaceholder":785},true,"\n",[133,788,789,792,794],{"class":135,"line":301},[133,790,791],{"class":139},"GPIO_PinState pinstate ",[133,793,273],{"class":143},[133,795,796],{"class":139}," GPIO_PIN_RESET;\n",[133,798,799],{"class":135,"line":312},[133,800,786],{"emptyLinePlaceholder":785},[133,802,803,806],{"class":135,"line":338},[133,804,805],{"class":143},"extern",[133,807,808],{"class":276}," \"C\"\n",[133,810,811,814,817,820,822,825,829],{"class":135,"line":364},[133,812,813],{"class":143},"void",[133,815,816],{"class":326}," StartDefaultTask",[133,818,819],{"class":139},"(",[133,821,813],{"class":143},[133,823,824],{"class":143}," *",[133,826,828],{"class":827},"s4XuR","argument",[133,830,831],{"class":139},")\n",[133,833,835],{"class":135,"line":834},9,[133,836,837],{"class":139},"{\n",[133,839,841,844],{"class":135,"line":840},10,[133,842,843],{"class":143},"  for",[133,845,846],{"class":139},"(;;)\n",[133,848,850],{"class":135,"line":849},11,[133,851,852],{"class":139},"  {\n",[133,854,856,859],{"class":135,"line":855},12,[133,857,858],{"class":326},"    HAL_GPIO_WritePin",[133,860,861],{"class":139},"(GPIOC,GPIO_PIN_13,pinstate);\n",[133,863,865,868,870,873,876,879,882,885,888],{"class":135,"line":864},13,[133,866,867],{"class":139},"    pinstate ",[133,869,273],{"class":143},[133,871,872],{"class":139}," (pinstate ",[133,874,875],{"class":143},"==",[133,877,878],{"class":139}," GPIO_PIN_RESET) ",[133,880,881],{"class":143},"?",[133,883,884],{"class":139}," GPIO_PIN_SET ",[133,886,887],{"class":143},":",[133,889,796],{"class":139},[133,891,893,896,898,902],{"class":135,"line":892},14,[133,894,895],{"class":326},"    osDelay",[133,897,819],{"class":139},[133,899,901],{"class":900},"sj4cs","500",[133,903,904],{"class":139},");\n",[133,906,908],{"class":135,"line":907},15,[133,909,910],{"class":139},"  }\n",[133,912,914],{"class":135,"line":913},16,[133,915,916],{"class":139},"}\n",[10,918,919],{},"led_task.h:",[125,921,923],{"className":127,"code":922,"language":129,"meta":84,"style":84},"#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",[19,924,925,933,940,944,952,958,962,967,971,978,982,988,992,996,1000],{"__ignoreMap":84},[133,926,927,930],{"class":135,"line":136},[133,928,929],{"class":143},"#ifndef",[133,931,932],{"class":326}," __LED_TASK_H_\n",[133,934,935,938],{"class":135,"line":267},[133,936,937],{"class":143},"#define",[133,939,932],{"class":326},[133,941,942],{"class":135,"line":279},[133,943,786],{"emptyLinePlaceholder":785},[133,945,946,949],{"class":135,"line":290},[133,947,948],{"class":143},"#ifdef",[133,950,951],{"class":326}," __cplusplus\n",[133,953,954,956],{"class":135,"line":301},[133,955,805],{"class":143},[133,957,808],{"class":276},[133,959,960],{"class":135,"line":312},[133,961,837],{"class":139},[133,963,964],{"class":135,"line":338},[133,965,966],{"class":143},"#endif\n",[133,968,969],{"class":135,"line":364},[133,970,786],{"emptyLinePlaceholder":785},[133,972,973,975],{"class":135,"line":834},[133,974,760],{"class":143},[133,976,977],{"class":276}," \"cpp_interface.h\"\n",[133,979,980],{"class":135,"line":840},[133,981,786],{"emptyLinePlaceholder":785},[133,983,984,986],{"class":135,"line":849},[133,985,948],{"class":143},[133,987,951],{"class":326},[133,989,990],{"class":135,"line":855},[133,991,916],{"class":139},[133,993,994],{"class":135,"line":864},[133,995,966],{"class":143},[133,997,998],{"class":135,"line":892},[133,999,786],{"emptyLinePlaceholder":785},[133,1001,1002],{"class":135,"line":907},[133,1003,966],{"class":143},[10,1005,1006,1007,1010,1011,1014],{},"然后打开",[19,1008,1009],{},"cmake/user","文件夹下的",[19,1012,1013],{},"CMakeLists.txt","，把刚才新建的led_task.cpp添加上去。",[10,1016,1017,1018,1021,1022,1024,1025,1027,1028,1030,1031,1033,1034,1036,1037,1039,1040,1043],{},"详细介绍（可以不看）：这里的",[19,1019,1020],{},"cmake/stm32cubemx","下的",[19,1023,1013],{},"是被CubeMX管理的，你重新用CubeMX生成新代码后，这个文件里的东西会被覆盖。而工作区根目录下的",[19,1026,1013],{},"是不会被重新覆盖的，而且给我们留了一些区域加源文件和头文件，但是这样会让这个文件太过于嘈杂。所以我们选择新建一个user文件夹，然后在这里面弄一个",[19,1029,1013],{},"，再用顶层",[19,1032,1013],{},"去加载这个子",[19,1035,1013],{},"，这个子",[19,1038,1013],{},"方便咱们修改，文件结构也更加明显。（这些都不需要咱们自己创建，我已经给创建到",[16,1041,1042],{},"模板","里了，你在上面复制的时候已经复制过来了）",[10,1045,1046],{},"像下图这样加上cpp文件。",[10,1048,1049],{},[82,1050],{"alt":84,"src":1051},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image92.webp",[10,1053,1054],{},"然后要去最顶层的CMakeLists.txt里加上这句话来引用我们自己的CMakeLists.txt。",[10,1056,1057],{},[82,1058],{"alt":84,"src":1059},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2025/07/18/image93.webp",[125,1061,1065],{"className":1062,"code":1063,"language":1064,"meta":84,"style":84},"language-cmake shiki shiki-themes github-light github-dark","\n# Add USER generated sources\nadd_subdirectory(cmake/user)\n","cmake",[19,1066,1067,1071,1077],{"__ignoreMap":84},[133,1068,1069],{"class":135,"line":136},[133,1070,786],{"emptyLinePlaceholder":785},[133,1072,1073],{"class":135,"line":267},[133,1074,1076],{"class":1075},"sJ8bj","# Add USER generated sources\n",[133,1078,1079,1082],{"class":135,"line":279},[133,1080,1081],{"class":143},"add_subdirectory",[133,1083,1084],{"class":139},"(cmake/user)\n",[10,1086,1087],{},"大功告成，编译一次试试。可以看到下图，那些新加的文件都编译上了。",[10,1089,1090],{},[82,1091],{"alt":482,"src":1092},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776429160105.webp",[75,1094,1095],{"id":1095},"下载程序到板子",[10,1097,1098,1099],{},"下载之前首先要先配置 ",[1100,1101],"br",{},[10,1103,1104],{},"ST-Link就不用配置了，直接开始debug就完事了。",[10,1106,1107],{},"而Jlink等是需要配置的。",[1109,1110,1111],"h5",{"id":1111},"配置调试器",[1113,1114,1116],"h6",{"id":1115},"st-link","ST-Link",[10,1118,1119],{},"无需任何配置",[1113,1121,1123],{"id":1122},"jlink","JLink",[10,1125,1126],{},"先安装jlink-gdbserver的bundle，如下图所示：",[10,1128,1129],{},[82,1130],{"alt":482,"src":1131},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776431910132.webp",[10,1133,1134],{},"然后还要配置下launch：",[10,1136,1137,1138],{},"问题解决方案：",[40,1139,1140],{"href":1140,"rel":1141},"https://community.st.com/t5/stm32cubeide-for-visual-studio/stm32h7a3vg-debugging-with-j-link-under-vscode/m-p/826188#M960",[44],[10,1143,1144,1145,1148,1149,1152],{},"在",[19,1146,1147],{},".vscode","文件夹下创建一个",[19,1150,1151],{},"launch.json","，然后输入以下内容：",[125,1154,1158],{"className":1155,"code":1156,"language":1157,"meta":84,"style":84},"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",[19,1159,1160,1164,1178,1186,1191,1203,1215,1227,1239,1251,1263,1275,1282,1287,1297,1302,1307,1313,1319],{"__ignoreMap":84},[133,1161,1162],{"class":135,"line":136},[133,1163,837],{"class":139},[133,1165,1166,1169,1172,1175],{"class":135,"line":267},[133,1167,1168],{"class":900},"    \"version\"",[133,1170,1171],{"class":139},": ",[133,1173,1174],{"class":276},"\"0.2.0\"",[133,1176,1177],{"class":139},",\n",[133,1179,1180,1183],{"class":135,"line":279},[133,1181,1182],{"class":900},"    \"configurations\"",[133,1184,1185],{"class":139},": [\n",[133,1187,1188],{"class":135,"line":290},[133,1189,1190],{"class":139},"        {\n",[133,1192,1193,1196,1198,1201],{"class":135,"line":301},[133,1194,1195],{"class":900},"            \"type\"",[133,1197,1171],{"class":139},[133,1199,1200],{"class":276},"\"jlinkgdbtarget\"",[133,1202,1177],{"class":139},[133,1204,1205,1208,1210,1213],{"class":135,"line":312},[133,1206,1207],{"class":900},"            \"request\"",[133,1209,1171],{"class":139},[133,1211,1212],{"class":276},"\"launch\"",[133,1214,1177],{"class":139},[133,1216,1217,1220,1222,1225],{"class":135,"line":338},[133,1218,1219],{"class":900},"            \"name\"",[133,1221,1171],{"class":139},[133,1223,1224],{"class":276},"\"STM32Cube: STM32 Launch JLink GDB Server\"",[133,1226,1177],{"class":139},[133,1228,1229,1232,1234,1237],{"class":135,"line":364},[133,1230,1231],{"class":900},"            \"origin\"",[133,1233,1171],{"class":139},[133,1235,1236],{"class":276},"\"snippet\"",[133,1238,1177],{"class":139},[133,1240,1241,1244,1246,1249],{"class":135,"line":834},[133,1242,1243],{"class":900},"            \"cwd\"",[133,1245,1171],{"class":139},[133,1247,1248],{"class":276},"\"${workspaceFolder}\"",[133,1250,1177],{"class":139},[133,1252,1253,1256,1258,1261],{"class":135,"line":840},[133,1254,1255],{"class":900},"            \"preBuild\"",[133,1257,1171],{"class":139},[133,1259,1260],{"class":276},"\"${command:st-stm32-ide-debug-launch.build}\"",[133,1262,1177],{"class":139},[133,1264,1265,1268,1270,1273],{"class":135,"line":849},[133,1266,1267],{"class":900},"            \"runEntry\"",[133,1269,1171],{"class":139},[133,1271,1272],{"class":276},"\"main\"",[133,1274,1177],{"class":139},[133,1276,1277,1280],{"class":135,"line":855},[133,1278,1279],{"class":900},"            \"imagesAndSymbols\"",[133,1281,1185],{"class":139},[133,1283,1284],{"class":135,"line":864},[133,1285,1286],{"class":139},"                {\n",[133,1288,1289,1292,1294],{"class":135,"line":892},[133,1290,1291],{"class":900},"                    \"imageFileName\"",[133,1293,1171],{"class":139},[133,1295,1296],{"class":276},"\"${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}\"\n",[133,1298,1299],{"class":135,"line":907},[133,1300,1301],{"class":139},"                }\n",[133,1303,1304],{"class":135,"line":913},[133,1305,1306],{"class":139},"            ]\n",[133,1308,1310],{"class":135,"line":1309},17,[133,1311,1312],{"class":139},"        }\n",[133,1314,1316],{"class":135,"line":1315},18,[133,1317,1318],{"class":139},"    ]\n",[133,1320,1322],{"class":135,"line":1321},19,[133,1323,916],{"class":139},[10,1325,1326],{},"完事",[1109,1328,1330],{"id":1329},"进行调试","进行调试：",[10,1332,1333],{},"如果你是STLink应该是下图所示：",[10,1335,1336],{},[82,1337],{"alt":482,"src":1338},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776431995915.webp",[10,1340,1341],{},"如果你是JLink应该是下图所示：",[10,1343,1344],{},[82,1345],{"alt":482,"src":1346},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776432039560.webp",[10,1348,1349,1350],{},"然后会出现这个条，他会下载程序到板子\n",[82,1351],{"alt":482,"src":1352},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776432143180.webp",[10,1354,1355],{},"然后就成功下载了程序并进入了Debug",[10,1357,1358],{},[82,1359],{"alt":482,"src":1360},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2026/04/17/1776432211211.webp",[1362,1363,1364],"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":84,"searchDepth":267,"depth":267,"links":1366},[1367,1368,1369],{"id":25,"depth":267,"text":25},{"id":35,"depth":267,"text":35},{"id":47,"depth":267,"text":48,"children":1370},[1371,1372,1373],{"id":52,"depth":279,"text":52},{"id":73,"depth":279,"text":73},{"id":550,"depth":279,"text":550},"2026-04-17","md",{},"/wiki/stm32cubeide-vscode",{"title":5,"description":21},"wiki/2026-04-17-STM32CubeIDE-VScode环境搭建","JTKYbJ8vgeyCl7sM-De10EtMHXhZ5ql4iTiaKnTAdQI",[1382,1382],null,1776432646183]