stm32多层菜单代码文件_MacOS在VSCode中优雅的编写STM32(HAL库)

Yume:MacOS基于STM32CubeMX、Makefile和OpenOCD的Stm32交叉编译环境搭建​zhuanlan.zhihu.com
zhihu-card-default.svg
继上篇文章,如何在MacOS利用STM32CubeMX生成初始化工程、Makefile自动编译生成机器码,再通过OpenOCD烧录到Stm32的Flash。对于简单的实验操作,如Blink、按键输入、Beep蜂鸣器,是不会感觉在编写代码有啥困难,至多就需要来回在 "Drivers/STM32F1xx_HAL_Driver/Src"(HAL库定义描述功能函数等)、 "Drivers/STM32F1xx_HAL_Driver/Inc"(HAL库定义描述typedef、define等)来回翻阅。 (注: "Drivers/STM32F1xx_HAL_Driver/Src"是很重要的HAL库文件描述,里面包含了如何使用HAL库各种模块的说明)
在实际的项目时,多种功能模块组合,会使调用HAL库不同模块的频率增加。在缺失IDE的IntelliSense(补全功能),来回翻阅不同HAL库模块.c文件查看函数定义名等操作,是肯定让人抓狂的。所以缺乏IDE编写代码,即不符合工程项目实际需要,也不能高效的编写项目代码。那对于执着反对使用盗版软件,同时秉持学习是为更好了解背后具体运作原理。那如何解决不用Windows平台下的Keil,实现在Keil下方便的编写代码呢?VSCode!网络上也不乏有类似的教程,但还是回到我实际应用尝试过程中,遇到网络其他分享者没有提到的、不具体的问题。所以通过本篇文章,更好的描述如何在MacOS中,通过VSCode编写STM32(HAL库)代码。同样,本文章将会忽略如“如何在MacOS下安装VSCode”这类已经有很多很好的教程的问题,而更着重在 如何配置的问题上。

1 准备工作

  1. 利用STM32CubeMX生成工程目录(详见MacOS基于STM32CubeMX、Makefile和OpenOCD的Stm32交叉编译环境搭建)
  2. VSCode(安装方法见其他优秀的分享者或官方文档(English): Visual Studio Code on macOS)
  3. VSCode插件"C/C++ extension"(安装方法见官方文档(English): Using Clang in Visual Studio Code)

在这里引用VSCode的官方教程Using Clang in Visual Studio Code,能方便的自动生成VSCode工程Project。

打开"Terminal"用cd命令进入到STM32工程根目录,如

cd STM32_ProjectName/

在工程根目录,在"Terminal"中输入"code ."(需要提前在VSCode中安装shell command line)。将会自动生成相应的VSCode工程Project,同时自动打开VSCode.app

code .

可以看到。左边菜单栏就包含了由STM32CubeMX生成的工程目录结构,如"BEEP"(工程名)

955ee3af322f68a9e8d85b9846eef18e.png

2 配置C/CPP: Edit configurations(UI)

按"F1"或组合键"Command + shift + P"呼出Command Palette(我也不知道怎么翻译好...)。可参考Using Clang in Visual Studio Code 中"C/C++ configuration"

43122bfbf5f467b9893c1cb1f2ba5af6.png

在Command Palette中输入"C/C++: Edit Configurations (UI)",即上图选项中的第一项。进入配置UI(微软工程师幸苦了)

cab21d48606a4bd156ec5bd8bccaea45.png

可以看到里面就能编写类似Makefile文件内,用以给编译器理解工程目录结构的各种信息。同样,我们也需要告诉这个插件,如何寻找对应的.h、.c文件,帮助我们在编写代码时检查语法和自动补全功能。

在这里对于不太了解STM32CubeMX生成目录结构的朋友,就需要参照着工程对应的Makefile,在这仅仅做简要的讲解,更细致的理解可以参考其他更优秀的分享者的文章。

  • 编译器路径

通过我的观察,推测C/C++ Configurations插件是通过编译器来检查部分语法的(类似C标准库"stdio.h"中的printf()之类)。我们是通过交叉编译器,生成对应的机器码。所以在这里需要选(文本框右边有个小的选项标志)"/usr/local/bin/arm-none-eabi-gcc"(如果你的交叉编译器不在系统PATH中,可以自己填入对应的地址)

  • 包含路径

描述中已经很清楚的说明"C/C++ Configurations"插件的工作方式,所以在这里需要填入包括HAL库的头文件的文件目录地址,用于给插件提供检索目录,达到自动补全的主要目的。对STM32CubeMX生成工程目录中相应.h头文件分布在哪不清楚的,可以查看Makefile辅助填写。(注意: 这里仅需要填Inc的目录,即.h所在的文件目录即可)

3c1fa62e5a3c8d7f09a8be4b8c6b3161.png

通过查看Makefile文件内容,可以看到编译需要包含的Inc目录(-I目录Path)。依次填入,如下图

d0d9c11b4aa805666017cdf2f5d92cf3.png
  • 定义

定义的作用让编译器知道你需要使用HAL库中那些模块等类似的操作(相当于模块开关)。同样参考Makefile

79a9d508e04475a4ae4ae2e3d346400b.png

可以看到通过define高速编译器需要使用HAL库、编译目标芯片的型号(-D定义)。依次填入,如下图

3af7f5697df76c610875a9f64ab91507.png

至此,就能在MacOS下的VSCode通过HAL库优雅编写STM32代码啦~

33f15862d872ff8e5e9cca5ba69e3b2e.png

Running Visual Studio Code on macOS​code.visualstudio.com
af87317db5172f5faa77c4e021aa93c3.png
Configure VS Code for Clang/LLVM on macOS​code.visualstudio.com
af87317db5172f5faa77c4e021aa93c3.png
Kkyy:使用 VSCode 打造 STM32 开发环境​zhuanlan.zhihu.com
zhihu-card-default.svg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值