mac 安装docker mysql MAC 安装vscode_macos安装vscode

SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!

前言:

笔者大概是电子系里为数不多的、习惯使用Macos操作系统的选手,然而在接触硬件开发时,还是面临着Keil软件没有macos版本的严重问题。迫于需要自力更生,不得不在网上查阅了诸多资料,也踩了许多坑,最终才完成了这套工具链的配置。

然而,尽管已经在宿舍安装了windows的台式机,还是沉醉于vscode的高颜值、强大的代码补全和跳转功能,因此希望将这个方法与大家分享,相信大家在花费一点点时间安装之后,都能够享用到这套工具带来的极大便捷。

本方法适用于windows、macos、linux三大操作系统。

由于使用STM32CubeMx进行初始化,因此将使用Hal库作为底层接口函数。建议在对STM32有初步了解后再去使用,避免掉坑。如果仍有配置上的困难,也欢迎联系笔者,一起讨论解决~

本方法所用到的大多文件都已经上传至清华云盘,可以在文末的链接中进行下载。

STM32CubeMx配置部分

首先,我们可以按照硬件部暑期stm32培训第一讲中的方法,设置LED灯的GPIO和时钟树。

在生成工程文件时,有别于MDK-ARM,我们这里选择makefile工具链。

(如果打不开STM32CubeMx,可能是由于Java版本不对,建议下载JDK8,更高版本因为缺少一部分功能,可能会在生成工程时报错)


mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_02

Gererate code之后生成项目



mac 安装docker mysql MAC 安装vscode_macos安装vscode_03

VSCode编辑



mac 安装docker mysql MAC 安装vscode_macos安装vscode_04

用vscode打开所在文件夹,.s文件里面可以查到各种各样的中断函数,但最重要的是Makefile文件:



mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_05

如果在工程中添加了其他文件(不是由cubemx生成的),还需要把路径添加到Makefile的c_includes中去,见上图(和Keil操作类似),否则可能会在编译时,发现无法找到相应的头文件,尽管可以跳转找到。



mac 安装docker mysql MAC 安装vscode_vscode c 宏定义_06

此外,如果有新增加的源文件(不是CubeMx生成的),同样也需要将文件的相对路径添加到C_SOURCES中(见上图),否则这个文件将不会被编译,最后会报错(无法找到对应的函数/变量)。

在Makefile文件的C_DEFS中进行了全局宏定义,需要复制到vscode的c_cpp_properties.json中(可以用shift-control-P搜索)(之后需要的全局宏定义也都要在这两个地方添加)



mac 安装docker mysql MAC 安装vscode_vscode c++的头文件报错_07

mac 安装docker mysql MAC 安装vscode_vscode c++的头文件报错_08

在difines中添加Makefile的两个全局宏定义,从而解锁了大量代码补全:(忽略大小写、待补全内容不需要连续),从此妈妈再也不担心我们会记错函数的名字了



mac 安装docker mysql MAC 安装vscode_stm32烧录软件_09

mac 安装docker mysql MAC 安装vscode_vscode c 宏定义_10

mac 安装docker mysql MAC 安装vscode_macos安装vscode_11

此外也解锁了非常方便的跳转功能:按住crtl后(mac中是command)直接点击函数名/文件名/报错位置,就可以跳转到定义/声明/文件



mac 安装docker mysql MAC 安装vscode_stm32烧录软件_12

到这里,我们不妨假设大家已经有能力完成源代码的编写,那么下一步就是至关重要的编译了。

gcc-arm交叉编译

我们用GNU Arm Embedded Toolchain(大概是arm公司提供的官方编译工具链)来进行编译

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads



mac 安装docker mysql MAC 安装vscode_macos安装vscode_13

大家可以自行选择合适的版本进行下载安装

安装完毕后记得勾选“添加环境变量”,以便在命令行直接使用相关指令;如果没有自动安装的话也可以手动添加:



mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_14

右击此电脑—高级系统设置—环境变量—找到Path—编辑—新建



mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_15

复制进去如下的文件夹的路径(以防万一,可以把用户变量和系统变量都添加上),点击确定、保存之后重启电脑即可。



mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_16

由于没有提供make文件,可以将网盘上提供的一个make.exe复制进这个文件夹

此后,我们只需要在vscode的终端输入make并点击回车,就可以开始编译了,



mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_17

mac 安装docker mysql MAC 安装vscode_stm32烧录软件_18

编译完成后会产生hex和bin文件,将其烧录进入单片机即可

常见错误:除了C语言的语法错误之外,最频繁的就是忘记将新加的文件写在Makefile中,建议返回上一节的内容仔细检查相关步骤。



mac 安装docker mysql MAC 安装vscode_vscode c 宏定义_19

mac 安装docker mysql MAC 安装vscode_vscode c++的头文件报错_20

另外,如果出现无法显示浮点数的问题,可以修改Makefile中的编译选项,将LDFLAGS中的nano.specs(精简版标准库)改为nosys.specs,可以看到编译产生文件的大小会略微增大。

STM32CubeProgrammer烧写

我们可以在st官网上下载这一软件

一个大坑在于,与cubemx类似,这一软件需要安装java环境,但高版本的JDK省去了一个重要组件,会导致无法打开图形界面,因此建议使用jdk8

之后可以打开图形界面,长这个亚子:



mac 安装docker mysql MAC 安装vscode_stm32烧录软件_21

在右侧的Firmware upgrade里面可以升级stlink的固件,如果识别不到,可能需要重新插一下stlink:(如果不升到最新版本的话可能不能正常烧录)



mac 安装docker mysql MAC 安装vscode_stm32烧录软件_22

目前常用的功能,一是stm32芯片的烧录:

连接stlink后,在file path中找到之前编译生成的bin文件,勾选Run after programming,点击Start Programming即可。此后就能看到stm32上的绿灯在每隔半秒闪烁一次。



mac 安装docker mysql MAC 安装vscode_vscode c++的头文件报错_23

另一作用就是芯片的重置:

如果烧录程序突然无法识别stm32,一个可能的原因是在stm32cubemx生成进行配置的时候,SYS的Debug没有设置成Serial Wire,这时就需要设置mode为Under Reset,再点击连接,进行Full chip erase就可以重置芯片,从而进一步烧录(顺便记得把工程Debug设置好)



mac 安装docker mysql MAC 安装vscode_stm32烧录软件_24

mac 安装docker mysql MAC 安装vscode_stm32烧录软件_25

最后,如果大家还觉得这样的操作比较麻烦,那么我们可以利用命令行工具简化操作:首先在环境变量的Path中添加CubeProgrammer所在的文件夹:(把软件安装在了哪里)



mac 安装docker mysql MAC 安装vscode_macos安装vscode_26

添加环境变量的操作同前;

在vscode的终端里,我们可以用命令行(CLI)一键烧录:(复制进去之后,直接按键盘的上箭头就可以显示之前已经使用过的指令,非常方便)

指令是STM32_Programmer_CLI -c port=SWD -d build/demo(工程名).bin 0x8000000 -s



mac 安装docker mysql MAC 安装vscode_stm32烧录软件_27

(因为还没修改debug选项,第一次没有烧进去,走一遍reset的流程,就可以顺利烧录了)

注意用命令行烧录的时候,需要断开图形界面软件和stlink的连接,事实上之后调试的时候就完全不需要打开图形界面了。



mac 安装docker mysql MAC 安装vscode_macos安装vscode_28

笔者也不知道这个鬼畜的“圹”是从哪里来的,但毕竟已经达到了100%,stm32上的灯也开始闪烁,可见这套流程总算是圆满成功了。

总结:

之所以要研究这套工具链,一是在于它能够兼容macos和linux系统(家里电脑是windows但随身笔记本mac air选手留下了辛酸的泪水),二是在于vscode的自动补全、跳转、搜索功能过于舒适。但一大问题还是在于,我们学习stm32所用的很多例程都是基于Keil的,所以需要大量的时间进行移植和debug,不过能在debug的过程中一步一步理解原理,找到问题所在,也算是一件令人头秃但快乐的事情吧。



mac 安装docker mysql MAC 安装vscode_mac 安装docker mysql_29

附一张用11寸mac air花了好长时间摸(调库)出来的欧拉角检测


撰稿人 | 高义淮

审稿人 | 刘洋