欢迎光临散文网 会员登陆 & 注册

Ubuntu20.04 下使用STM32CubeMX+Vscode+st-flash 生成&编写&烧录 stm32代码の备忘录

2023-08-06 22:15 作者:竹之武  | 我要投稿

为了统一日后科研工作的环境,准备将自己的STM32开发环境转移到Ubuntu上。

经过折腾终于完成了在STM32上点灯的伟大壮举。(高举双臂欢呼)

0. 本文说明

    - 本文假设读者对于STM32单片机有一定了解,至少了解STM32的时钟树(知道有这个玩意儿)和GPIO;

    - 本文介绍了在已有环境后如何完生成和烧录代码的步骤,不包含搭建环境的过程,可以先找别的文章,搭建好必要的环境后再来看。

1. CubeMX 生成Makefile文件

    假设你已经安装好了STM32CubeMX,并且安装了对应的手头的芯片的库如图1.1所示。(我用的是STM32F407ZGT6)

图1.1 绿框表示对应库已安装,可在菜单栏Help选项中找到这个manager

    下一步开始一个工程,我选的是Home界面的 Start My project from MCU 如图1.2 。

图1.2 

 下一步选择对应芯片后开始工程,别的都可以不管先。选好后可以star一下常用芯片,便于日后接着用。

stm32! 启动!

图1.3 左上角输入芯片以查找,下框里选好后右上start project

左侧System Core 里面可以配置系统时钟,并开启需要的外设。我手头上的板子有外部的时钟原可以用,这里将其打开,如图1.4所示。

图1.4 将HSE和LSE从Disable改成晶振

Gpio直接从可视化芯片上勾选就行,我这里是PF9和PF10 。

图1.5 选择PF10 指明它是个GPIO的输出端

然后在左侧对GPIO进行设置,根据个人需要选择GPIO的配置情况。我这里使用推挽输出+上拉电阻。PF9、PF10 在硬件上对应两个LED的负极,程序控制两个引脚输出低电平则灯亮。如图1.6所示,程序写出来在初始状态灯就是亮的。

图1.6 GPIO 配置

Clock Configuration项目(这位更是重量级)

没必要搞清楚什么锁相环什么倍频什么分频.. 至少不开别的外设的情况下主频率168M调出来就行(x)

我这边用的是正点原子的板子,我查了下对应例程里面关于系统时钟配置的相关文件,进行了如下设置(图1.7)。

只是点个灯的话,这些设置关系不大。如果开定时器、通讯就不一样了。

图1.7 小小的时钟树震撼

下一步,在Project Manager中选择输出目录。最重要的是选择Toolchain/IDE的时候选择Makefile,因为之后是使用make进行编译的。

图1.8 导出代码前的配置工作

右上Generate Code,之后可以关闭CubeMX了。


2. Vscode 相关配置

    来到生成的工程目录下。利用终端的 code . 指令打开vscode 。打开Makefile文件进行一波观察。

图2.1 Makefile

    图中C_DEFS 和 C_INCLUDES 当中为工程的宏定义和头文件引用目录,需要将其录入到c_cpp_properties.json 文件当中。(Ctrl+Shift+P 可以生成c/cpp 配置文件)


【.. 卧槽?B站有代码块了!啊?过了几年就是不一样了哈x 】

注意上述代码中includePath 和 defines 当中的内容。照着这个该就行,不过在Makefile当中,这些内容有 -I 和 -D 的前缀,改一下,然后保存起来,日后可用。配置工作到此位置(如果之后打算在线Debug,还需要配置点别的,这不是本文要讨论的内容了)


接下来是修改基于HAL库的STM32代码,此处不赘述。【假设你是李华,你的单片机朋友想要点亮两个LED灯,但是苦于它就是个板子写不了代码迟迟行不通,现在请你在main.c 文件当中编写代码帮助它实现愿望。字数要求:不少于3行(x)】

【事实上正如第1部分中配置PF9 和PF10 所言,什么都不改直接运行灯他也能亮x】



3.make 编译与 st-flash 烧录

在工程的目录下的终端里输入make进行编译(这里假设make ,以及交叉编译的相关工具已经安装好了,网上能找到教程),会显示如下的一些个信息:

图3.1 make编译结果显示

图3.1的最后一行内容告诉你,名为led2.bin的文件生成在了工程目录下的 build子目录中。

cd build 进入这个目录。

输入以下命令,完成通过stlink的烧录工作。

图片3.2 st-flash 进行程序烧写结果

完成后应该能看到stm32板子上的灯亮了。【李华完成了单片机朋友的委托 :) 】


以上是全部的过程了,中间可能会涉及到很多工具的安装,包括VSCODE当中需要使用的Cmake等插件、在Linux上编译ARM程序的交叉编译器之类,本文没有涉及(反复强调233)。这些在读者尝试“在Ubuntu系统下搭建STM32 开发环境”的过程中,都是容易查询到的。笔者在自己尝试搭建的过程中苦于没有教程能够指出东西都搭建完了之后怎么用,故作此篇,以飨后人(大嘘)。

或许之后研究研究怎么配置在线Debug。

Ubuntu20.04 下使用STM32CubeMX+Vscode+st-flash 生成&编写&烧录 stm32代码の备忘录的评论 (共 条)

分享到微博请遵守国家法律