CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯

文档作者 Flanker
文档内容简要说明 记录学习cubeMX和platformIO开发stm32的过程(引用会标注引用链接)
文档修订记录 2020.05.24
创建文档,加入pio,cubemx安装——Flanker
2020.05.29
迁移至CSDN并继续编辑
丰富pio,cubemx安装,加入cubemx配置点亮led灯工程——Flanker
2020.05.29
完整描述cube配合keil以及pio的方法,以及pio中upload出现的问题的解决方法——Flanker
正文 CubeMX安装 搭建CubeMX

CubeMx 是一个 由 ST 推出的芯片图形化配置工具,为了使开发者尽可能地可以不再关心底层,允许用户使用图形化向导生成C初始化代码。
使用 CubuMx 时需要先安装好 JAVA 环境,需要安装 JRE 即可。
JRE下载:java官方的太太太太慢了,这个是CSDN找的JRE_8u251
官方STM32-CubeMx地址:下载地址
安装好CubeMX后打开进入。
在embeded software packages可以从cubemx中直接选择。选择F1系列最新的即可
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片


PlatformIO的安装 PIO official installation with VScode
用VScode作为stm32开发平台(platformIO)
首先在PIO中新建一个工程
安装好后, 打开Home Page:
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片


CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

在右侧Quick Access栏中,有4个选项。可以看得出来,PIO对Arduino的支持比较好。但是此时我们需要的是STM32+CubeMX。
点击New Project打开project配置界面:
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

点击Finish后,如果是首次配置的话,又是一段漫长的等待
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

完成后,VSCode会自动重新加载到该项目文件夹。到这里,一个PIO工程就初始化完成了
先按照这篇文章所说新建一个项目,例如Nano_test,打开对应工程的目录:
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

OK,记住这个位置,我们去配置cubemx

使用CubeMX生成PlatformIO可用代码 用VScode作为stm32开发平台(platformIO)
使用CubeMX生成工程
新建项目。通过搜索功能查找开发板的芯片
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

在左侧边栏中找到system core
点击SYS,将Debug的选项改成串口线
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

点击RCC,将HSE的选项改成晶振
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

进入clock configuration,直接修改HCLK数值,更改为最高72(MHz),然后会弹出窗口,点击确定会自动配置时钟。配置完后如下图
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

返回Pinout&configuration,配置芯片的引脚。因为本人使用的是正点原子的F103RBT的nano开发板,通过查找官方手册可以找到DS0的LED对应的是PC0引脚。点击PC0引脚,选择GPIO_Output
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

点击左侧GPIO,在中间configuration栏中点击PC0,将GPIO Pull-up/Pull-dowm选项开城Pull-down。(这是因为根据电路图,电位拉低led才会被点亮)
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

来到project manager,在code generator中勾选“生成外设初始化——”选项
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

回到project选项,添加项目名称,将“工具链/IDE”选项更改成STM32CubeIDE(如果想上车keil,这里要改成MDK,并且按照自己的keil版本选择生成版本)
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

这时我们就在对应文件夹获得了.ioc文件
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

其实……如果懒得搞PIO,直接keil也成
Switch(IDE) casekeil
cube+keil点灯
如果是keil,直接找到.uvprojx打开即可
在main.c中找到while(1),
在注释提示可以添加自己代码的地方添加:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET); HAL_Delay(1000);

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

选择选项CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片
在debug栏下选择使用stlink
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

继续点击旁边的setting,然后再flash download中勾选“reset and run”
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

一路ok保存设置,然后连接板子,build+download一波,然后led就闪烁了
casePIO
在cubemx中配置完一个工程后,将已有.ioc文件复制到pio工程的目录下(上文讲pio的时候提到过),双击打开cube,点击右上角的generate code,完成后:
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

这个时候再进入vscode,项目中已经有了刚刚生成的文件。打开platformio.ini,并添加代码:
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

[env:genericSTM32F103RB] platform = ststm32 board = genericSTM32F103RB framework = stm32cube debug_tool = stlink upload_protocol = stlink[platformio] include_dir=Inc src_dir=Src

添加亮灯的代码:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET); HAL_Delay(1000);

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

这个时候CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片
点击打勾build
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

成功后准备uploadCubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片
,那个右箭头
但是upload需要安装一些下载可能很慢的东西,比如我卡在tool-stm32duino的安装上
自己下载tool-stm32duino,然后把解压的文件夹拷贝到C:\Users\$你的用户名$\.platformio\packages下
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

然后就可以正常烧录了
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

看,它亮了 我好了
CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯
文章图片

其他链接 使用ST-LINK utility将单片机中的程序下载下来
CubeMX配合PlatformIO开发STM32,点亮LED灯
CubeMX配合PlatformIO开发STM32,配置usart实现串口通讯
CubeMX配合PlatformIO开发STM32,配置ADC实现电池电压检测
CubeMX配合PlatformIO开发STM32,配置MPU6050(I2C)
CubeMX配合PlatformIO开发STM32,配置双MPU6050(板载与外置),并使用gui显示数据
CubeMX配合PlatformIO开发STM32,通过系统时钟(systick)中断让不同功能代码以不同频率执行,计算计算所花时间
CubeMX配合PlatformIO开发STM32,实现pid算法控制电机的转角
CubeMX配合PlatformIO开发STM32,配置定时器,实现SPWM算法控制电机
CubeMX配合PlatformIO开发STM32,配置uart中断,配合pythond的gui在线调参

【CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯】

    推荐阅读