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 是一个 由 ST 推出的芯片图形化配置工具,为了使开发者尽可能地可以不再关心底层,允许用户使用图形化向导生成C初始化代码。
使用 CubuMx 时需要先安装好 JAVA 环境,需要安装 JRE 即可。
JRE下载:java官方的太太太太慢了,这个是CSDN找的JRE_8u251
官方STM32-CubeMx地址:下载地址
安装好CubeMX后打开进入。
在embeded software packages可以从cubemx中直接选择。选择F1系列最新的即可
PIO official installation with VScode
用VScode作为stm32开发平台(platformIO)
首先在PIO中新建一个工程
安装好后, 打开Home Page:
在右侧Quick Access栏中,有4个选项。可以看得出来,PIO对Arduino的支持比较好。但是此时我们需要的是STM32+CubeMX。
点击
New Project
打开project配置界面:点击
Finish
后,如果是首次配置的话,又是一段漫长的等待完成后,VSCode会自动重新加载到该项目文件夹。到这里,一个PIO工程就初始化完成了
先按照这篇文章所说新建一个项目,例如Nano_test,打开对应工程的目录:
OK,记住这个位置,我们去配置cubemx
用VScode作为stm32开发平台(platformIO)
新建项目。通过搜索功能查找开发板的芯片
在左侧边栏中找到system core
点击SYS,将Debug的选项改成串口线
点击RCC,将HSE的选项改成晶振
进入clock configuration,直接修改HCLK数值,更改为最高72(MHz),然后会弹出窗口,点击确定会自动配置时钟。配置完后如下图
返回Pinout&configuration,配置芯片的引脚。因为本人使用的是正点原子的F103RBT的nano开发板,通过查找官方手册可以找到DS0的LED对应的是PC0引脚。点击PC0引脚,选择GPIO_Output
点击左侧GPIO,在中间configuration栏中点击PC0,将GPIO Pull-up/Pull-dowm选项开城Pull-down。(这是因为根据电路图,电位拉低led才会被点亮)
来到project manager,在code generator中勾选“生成外设初始化——”选项
回到project选项,添加项目名称,将“工具链/IDE”选项更改成STM32CubeIDE(如果想上车keil,这里要改成MDK,并且按照自己的keil版本选择生成版本)
这时我们就在对应文件夹获得了.ioc文件
其实……如果懒得搞PIO,直接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);
继续点击旁边的setting,然后再flash download中勾选“reset and run”
一路ok保存设置,然后连接板子,build+download一波,然后led就闪烁了
在cubemx中配置完一个工程后,将已有.ioc文件复制到pio工程的目录下(上文讲pio的时候提到过),双击打开cube,点击右上角的generate code,完成后:
这个时候再进入vscode,项目中已经有了刚刚生成的文件。打开platformio.ini,并添加代码:
[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);
但是upload需要安装一些下载可能很慢的东西,比如我卡在tool-stm32duino的安装上
自己下载tool-stm32duino,然后把解压的文件夹拷贝到C:\Users\$你的用户名$\.platformio\packages下
然后就可以正常烧录了
看,它亮了 我好了
使用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在线调参