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灯_第1张图片

 

PlatformIO的安装

PIO official installation with VScode

用VScode作为stm32开发平台(platformIO)

首先在PIO中新建一个工程

安装好后, 打开Home Page:

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第2张图片

 

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第3张图片

在右侧Quick Access栏中,有4个选项。可以看得出来,PIO对Arduino的支持比较好。但是此时我们需要的是STM32+CubeMX。

点击New Project打开project配置界面:

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第4张图片

点击Finish后,如果是首次配置的话,又是一段漫长的等待

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第5张图片

完成后,VSCode会自动重新加载到该项目文件夹。到这里,一个PIO工程就初始化完成了

先按照这篇文章所说新建一个项目,例如Nano_test,打开对应工程的目录:

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第6张图片

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

使用CubeMX生成PlatformIO可用代码

用VScode作为stm32开发平台(platformIO)

使用CubeMX生成工程

新建项目。通过搜索功能查找开发板的芯片

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第7张图片

在左侧边栏中找到system core

点击SYS,将Debug的选项改成串口线

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第8张图片

点击RCC,将HSE的选项改成晶振

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第9张图片

进入clock configuration,直接修改HCLK数值,更改为最高72(MHz),然后会弹出窗口,点击确定会自动配置时钟。配置完后如下图

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第10张图片

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

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第11张图片

点击左侧GPIO,在中间configuration栏中点击PC0,将GPIO Pull-up/Pull-dowm选项开城Pull-down。(这是因为根据电路图,电位拉低led才会被点亮)

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第12张图片

来到project manager,在code generator中勾选“生成外设初始化——”选项

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第13张图片

回到project选项,添加项目名称,将“工具链/IDE”选项更改成STM32CubeIDE(如果想上车keil,这里要改成MDK,并且按照自己的keil版本选择生成版本)

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第14张图片

这时我们就在对应文件夹获得了.ioc文件

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第15张图片

其实……如果懒得搞PIO,直接keil也成

Switch(IDE)

case  keil

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灯_第16张图片

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

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第18张图片

继续点击旁边的setting,然后再flash download中勾选“reset and run”

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第19张图片

一路ok保存设置,然后连接板子,build+download一波,然后led就闪烁了

case  PIO

在cubemx中配置完一个工程后,将已有.ioc文件复制到pio工程的目录下(上文讲pio的时候提到过),双击打开cube,点击右上角的generate code,完成后:

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第20张图片

这个时候再进入vscode,项目中已经有了刚刚生成的文件。打开platformio.ini,并添加代码:

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第21张图片

[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灯_第22张图片

这个时候点击打勾build

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第23张图片

成功后准备upload,那个右箭头

但是upload需要安装一些下载可能很慢的东西,比如我卡在tool-stm32duino的安装上

自己下载tool-stm32duino,然后把解压的文件夹拷贝到C:\Users\$你的用户名$\.platformio\packages下

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第24张图片

然后就可以正常烧录了

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第25张图片

看,它亮了 我好了

CubeMX配合PlatformIO/MDK开发STM32,点亮LED灯_第26张图片

其他链接

使用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灯)