VSCode搭建STM32开发环境(极简⾃我搭建懒⼈直接使⽤插
件)
VSCode搭建STM32开发环境(极简⾃我搭建&懒⼈直接使⽤插件)
⼀开始是⽤STM32CubeMX+Keil进⾏STM32的学习和开发,但是keil的界⾯属实有点丑。。最开始甚⾄有点把我劝退。抛开颜值不说,这货的代码补全功能有点菜,很多时候都不显⽰keyword的提⽰,⾄少在我的电脑上是这样,极个别时候倒是还反应挺快。
于是便想要⽤颜值⾼⽽且代码补全功能⽐较强⼤的vscode来进⾏STM32的开发。⽽且⽆论何种开发都⽤⼀个⼯具也⽐较⽅便。看了⼀些别⼈的博客,在这⾥汇总⼀下,也算做个笔记。
本教程思路为:使⽤STM32CubeMX⽣成Makefile⼯程(STM32CubeMX⾃动进⾏初始化配置实在太⾹了,应该也是⽬前stm32开发的主流),然后使⽤vscode对⼯程进⾏编写,编译和烧录。
总算抽出时间写完了,累死了...
⽬录
⽬录
⽅法⼀:arm⼯具链+OpenOCD烧录
1.⼤致思路
使⽤STM32CubeMX⽣成⼯程,⽣成时选项选择⽣成Makefile,通过make调⽤arm⼯具链编译,然后通过OpenOCD烧录。
通过写c_cpp_properties.json可以利⽤VSCode⽜逼的IntelliSense,可以很爽的写代码。通过task.json⽅便的完成编译和烧录功能,通过写launch.json以正确进⼊调试。
此外,也可以正常⽣成MDK或其他⼯程,然后vscode只写c_cpp_properties.json,这样的⽬的是⽤vscode写代码,⽤MDK编译和烧录,防⽌⽞学问题发⽣。
⽐如我⽬前没有解决的⼀个问题是H7的dma问题。看了其他⼈的博客,是因为dma使⽤了不该它使⽤的内存地址,但是⽤MDK的话官⽅⽣成的⼯程已经帮你把地址规定好了,是可以正常使⽤的,⽤arm⼯具链编译的话我还不清楚在哪⾥修改这个地址,仅在代码⾥定向这个地址的话⼜不好使....有⼩伙伴解决了的话欢迎评论区或私信告诉我⼀下;)
2.准备⼯具
(1)
(2)
(3)
(4)
(5)
(6)
2.1安装⼯具
安装不细说了,记得把MinGW-w64,OpenOCD,arm-none-eabi-gcc,Git添加到环境变量。
桌⾯右键点击此电脑->属性->⾼级系统设置->环境变量->Path->编辑->新建->浏览,选择对应的路径(到bin⽂件夹),最后应⽤->确定。
参考图:
小程序登录界面设计2.2补充说明
(3)MinGW-w64:Version版本号,选最新即可;Architecture架构跟操作系统有关,64位系统选择x86_64,32位系统选择
i686;Threads线程标准windows开发选win32,其他选posix;Exception异常处理模型,x86_64可选为seh和sjlj,i686为dwarf和sjlj,⼀般选seh和dwarf就可;Build revision构建版本号,选择最⼤就可。
(6)Git:原本以为不能⽤powershell。。。虽然⾃⼰也觉得这不可能,但是⼀开始确实遇到了问题,不过现在姑且已经解决了。⽤git-bash的话⽅便⼀些,powershell的话有些地⽅要改⼀下,⽽且不如⽤gitbash快,主要体现在执⾏task时会卡⼀卡。关于这个地⽅其实我也不是很懂,不知道有没有其他⽅法解决,有的话欢迎评论区或私信提醒。:)
3.使⽤STM32CubeMX创建⼯程
30岁学编程没公司要前⾯选芯⽚,配置外设时钟等等正常配就好,要⽣成⼯程前点击Project Manager,在Toolchain/IDE处选择Makefile。
然后直接GENERATE CODE。
4.VSCode内部配置
⾸先在VSCode中打开刚才的⼯程⽂件夹。
properties文件用什么打开直接按F5,选择C++(GDB/LLDB)-&⽣成活动调试⽂件,然后会⾃动⽣成.vscode⽂件夹,当然啦,会报错,点中⽌就可以了。
4.1添加并配置c_cpp_properties.json
(1)在.vscode⽂件夹中添加c_cpp_properties.json⽂件,配置了这个,VSCode才能到includePath,写代码的时候才不会⼀堆红波浪线。它的基本格式是这样的:
{
"configurations": [
{
"name": "Win32",
"browse": {
"path": [
],
"limitSymbolsToIncludedHeaders": true
},
"includePath": [
],
"defines": [
]
,
"compilerPath": " ",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4streamstone什么牌子轮胎
}
把⿏标放在对应的参数上可以看到vscode对其的解释,⽐如把⿏标放在path上:
⾸先我们看"defines",这个是告诉VSCode你预先定义了哪些宏,怎么知道这⾥应该填什么呢?打开⽬录下的Makefile⽂件便可以看到:
忽略前⾯的-D,我们便可以知道预先定义的宏是"USE_HAL_DRIVER"和"STM32F407XX"。(⼀般来说⼀定是这两个,其中第⼆个就是你的芯⽚)
再看"includePath",这个是告诉VSCode去哪些⽬录⾥头⽂件,怎么知道这⾥应该填什么呢?同样,打开⽬录下的Makefile寻:
忽略前⾯的-I,将后⾯的路径填⼊即可。(或者可以直接偷懒填"${workspaceFolder}/**",其中workspaceFolder表⽰当前⽬录,**表⽰该⽬录下递归遍历所有⽂件)
⾄于"path",似乎不是很重要,和上⾯的"includePath"填⼀样的或者填"${workspaceFolder}/"即可。
最后是"compilerPath",显然是填编译器路径,把MinGW-w64下的gcc的路径填进去就可以了,例如我的是这
样:"D:\\Programming\\mingw64\\bin\\"。
⾄此,⾄少VSCode智能提⽰和代码补全功能就⼯作正常了,可以正常的写代码。虽然还不能编译烧录和调试,不过VSCode编辑+Keil编译烧录调试也是不错的选择(毕竟Keil的编辑功能实在是不好⽤,界⾯也丑)。
control用法最后⼤致是这个样⼦:
{
"configurations": [
{
"name": "Win32",
"browse": {
"path": [
"${workspaceFolder}/"
],
"limitSymbolsToIncludedHeaders": true
},
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"USE_HAL_DRIVER",
"STM32F407xx"
],
"compilerPath": "D:\\Programming\\mingw64\\bin\\",//编译器路径
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
]
,
"version": 4
}
4.2添加settings.json
在.vscode⽂件夹中添加settings.json⽂件,添加:
{
"terminal.integrated.shell.windows": "D:\\Programming\\Git\\bin\\"
}
这样便指定了该⽂件夹下默认shell是bash,出现提⽰的时候选择允许改变即可。
vscode更新后已经不推荐使⽤这种⽅法
⽬前虽然会警告,但仍然可以使⽤,⽽且⽐新⽅法优先级更⾼,也就是说⽬前继续使⽤此⽅法不会有任何问题,暂时
新⽅法如下:
markdown转html js点击左下⾓⼩齿轮进⼊设置,在上⽅搜索栏搜索terminal default,然后点在settings.json中编辑
总之只要能把全局的settings.json打开就⾏。
到这个位置:
注意"terminal.integrated.defaultProfile.windows"和"terminal.integrated.profiles.windows"可能不在同⼀⾏。
后者是终端配置,包含名称,路径(path),参数(args),图标(icon)。路径也可以不⽤path⽤source,这样它会⾃⼰寻路径,⽐如我图⾥的PowerShell。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论