
前言 Windows系统下,目前STM32主流的开发环境还是MDK(Keil),但MDK有着不可忽视的缺点: 界面古老,配置界面效果繁琐,很难真正实现一个低亮度视觉友好的界面。 自动补全,Keil的自动补全功能只能说是比没有强。' ?) V+ \1 j! x 功能臃肿,有很多普通开发者或DIY用户用不到的功能。, j# O, k* A# V' s 版权风险,虽然现在推出了社区版可以省去破解的步骤,但如果不小心用作商业用途还是会存在侵权的风险。5 s' F+ ^4 i+ j3 o: R 因此,企业与一般开发者可以选择 VS Code + PlatformIO + STM32CubeMX 来搭建开发环境,优点如下:( Q5 U9 M0 q4 P, x0 ~) l% a0 z 界面优秀,作为“宇宙最强IDE”的VS Code在用户体验上是一流的。 自动补全,功能较为完善。0 U+ J6 T& P5 G! f: z% ^ 完全免费,无需担心版权问题。 0 @' U- }3 t& r* r% j 前期准备 VS Code:主要用于编辑代码 C/C++ 插件:对C/C++开发的支持(关键字高亮等) Cortex-Debug 插件:用于后期进行调试, _' |5 S, T; X1 H, G# T9 k PlatformIO IDE 插件:用于管理工程& M8 o4 E; _# K" M }. V- D STM32CubeMX 6.5.0:生成STM32代码 B- s; m9 L0 u1 I& Y2 g; Y+ L : A' L' T# B2 n9 w 软件安装 这里重点讲一下 PlatformIO IDE 这个插件的安装方法7 O( c9 q7 h5 g i z 因为一些众所周知的原因,安装时会很缓慢,需要耐心等待( [ S5 \. E# [6 w2 i 在应用商店搜索到插件后,点击安装。 PlatformIO 安装需要依赖 Python,如果电脑已存在 Python 但报错的话,则需要移除并安装最新版本的 Python 并加入到环境变量中。 过程会相当漫长,且没有进度提示,本人测试时安装用了1小时左右。8 L- G+ O" E4 R1 p0 k! } ! s! C( \: |0 \) ?1 \8 Y! d' x ![]() , v8 y) M% L' W% O9 I 安装好后就是上图所示状态,点击左下角“小房子”图标就会进入主界面。" |- W0 `/ ?0 v( L6 l 建立工程$ ~9 R' E; G- d( `4 \$ e PlatformIO 建立工程 方法一 (不推荐) 主界面点击"New Project" 新建工程 ![]() % \3 Y% ] M/ { \8 ] 输入工程名(Project name)、 板子信息(Board)和 软件框架(Framework),并选择工程位置。 板子信息根据芯片选择即可,除了芯片信息其他后续使用不到。 软件框架Framework任意选择即可,因为要使用STM32CubeMX生成代码,所以不使用内置的软件框架。 创建工程时会在选择的位置创建一个以工程名命名的文件夹存放工程文件。选择位置时要注意。 # m- `, T' ]) K4 W ![]() 配置好项目信息后,点击Finish生成工程,第一次创建工程的过程极其漫长,因为要下载很多源文件。之后再使用这个方法会快很多。+ I. J* p3 z- [$ `4 W1 O ![]() 这种方法虽然为官方推荐的方法,但过程较为繁琐,实际应用中一般推荐方法二。7 }6 V& {9 d. \! s* z4 z( P 方法二 (推荐) 因为 PlatformIO IDE是按照配置文件 platformio.ini 来管理工程的,因此可以直接创建一个 platformio.ini 填入内容(或复制已有工程的配置文件),; 表示注释。
使用 VS Code 打开文件夹即可被 PlatformIO IDE 识别,并自动生成配置文件。 ![]() STM32CubeMX 生成代码 根据需要配置外设及时钟 使用板载 LED 与 LPUART1 测试。 # |3 v% H/ U5 J* |/ ~ ![]() ' \# n+ y: |; o$ n9 W 配置时钟为最高的64MHz。 * O& I, g9 g) A2 b8 I7 `- M& u ![]() 6 s0 u9 V# O( Y! I/ B 配置工程目录 填入工程名,注意这里的工程名就是刚刚创建 PlatformIO 的文件夹名,位置要对应,IDE要选择Makefile。 ![]() / U2 Q) W! m7 c$ s1 }5 c4 Y 在Code Generator中选择Copy only the necessary library files这个选项,对新手来说很重要。 ![]() & a2 b6 v4 |& l, M4 _ 注意: z( G6 D1 U7 L5 P/ \ 新手建议勾选仅复制工程需要的源文件,因为 PlatformIO IDE 工程源文件是以文件夹过滤的形式来确定的,如果勾选"所有源文件",那么STM32CubeMX 会将包括某些应用模板在内的全部源文件都加入到工程中,在编译的时候会报错,除非生成代码后再手动一一删除。& _; V& q* ~7 B 生成代码0 j0 C! X9 y4 ?& n5 B 生成代码后工程文件夹文件如下图所示。: u% ]! L" f) R8 T M8 p: ~& D ![]() . H: K+ T* Y" S6 t. {1 L 修改 PlatformIO 配置文件 这一步就是根据 STM32CubeMX 生成的代码为 PlatformIO 配置编译所需要的文件。 使用build_flags将生成的驱动文件包含到编译条件中,-D表示宏定义,-I表示头文件路径。 使用src_filter过滤需要的源文件,+<path>表示增加某个路径,-<path>表示排除某个路径。 使用board_build.ldscript指定编译时的链接文件。
软件开发5 C: A. Q+ x. v+ b 编译&下载程序( \# T- N. F' v* ?2 M' m! p 在main.c的编写测试代码,点击左下角的 Build 按键即可编译,第一次编译软件会自动下载所需的工具(openocd等)。$ D3 t- }8 e7 i0 m4 X + r4 `; B$ `! Q' z ![]() . G; N8 e; Z' O9 H6 s 编译完成后点击 Upload 即可下载程序,会自动复位。这时即可看到LED在闪烁。$ ^0 l/ Q6 b8 b/ F5 { & k3 ^, C# j) g+ v& Q ![]() ; K! ?$ G! o3 v8 f; N 调试" ?& F/ ~8 y) Z 点击左侧的调试按钮即可进入调试界面,点击 PIO Debug 开始调试。9 S+ B. Y# d0 g4 V8 p' M 3 i2 x- ]; Y; ` ![]() 调试开始后PlatformIO会先编译,后进入调试界面,使用上方出现的小框框可以实现开始、停止、单步等操作。左侧可以查看寄存器状态。3 ^! V; y$ ~7 \$ x( w9 G ![]() 2 g. M3 C: O ?, o5 Q' l8 u 选中变量可以右键添加到监视窗口 " a. M% a& D" x ![]() 要点总结1 @' g2 t5 L) z8 C1 F6 M 创建工程时可以直接复制已有工程的 platformio.ini和STM32CubeMX_ProjName.ioc到新工程文件夹。注意:STM32CubeMX_ProjName.ioc文件名称必须改为与所在文件夹名称一致的名称。这样才会在当前目录下生成代码。 ————————————————0 p2 z4 |5 m6 }$ y W: e 版权声明:PeidzzZ % z5 R5 N- x: Z# | ^ / V" m1 C& S) A5 J |
【STM32C0测评】Nucleo-C092开发板功耗测试
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(软件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件软件IIC一网打尽)
【STM32N6570-DK评测】3.CubeMX关于DCMIPP和CSI的BUG整理及摄像头使用
【STM32C0测评】Nucleo-C092开发板USART串口测试
【STM32C0测评】Nucleo-C092开发板使用PWM控制板载LED呼吸灯
【STM32C0测评】Nucleo-C092板卡外部中断控制板载LED灯
拷打cubemx【002】——自定义还需基于芯片的工程
【实测教程】STM32CubeMX-STM32L4之研究(ADC)