使用platformio+arduino开发自定义板子STM32G070

使用platformio平台和Arduino框架开发STM32G0,开发环境使用VSCode+PlatformIO插件;

1 自定义boards

因为Platformio中没有自己需要的STM32G070RB这个型号的板子,因此需要自己定义一个开发板型号。

1.1 添加一个自定义boards

首先这个是STM32系列,因此其boards目录如下(这里pio安装在默认位置):

C:\Users\userName\.platformio\platforms\ststm32\boards

在这个目录新建一个board描述文件:MonkeyPi_STM32_G070RB.json,因为和STM32G071接近,因此可以复制 nucleo_g071rb.json文件 进行修改,内容如下:

{
  "build": {
    "core": "stm32",
    "cpu": "cortex-m0plus",
    "extra_flags": "-DSTM32G0xx -DSTM32G070xx",
    "f_cpu": "64000000L",
    "framework_extra_flags": {
      "arduino": "-D__CORTEX_SC=0"
    },
    "mcu": "stm32g070rbt6",
    "product_line": "STM32G070xx",
    "variant": "STM32G0xx/G070RBT"
  },
  "debug": {
    "default_tools": [
      "stlink"
    ],
    "jlink_device": "STM32G070RB",
    "onboard_tools": [
      "stlink"
    ],
    "openocd_target": "stm32g0x",
    "svd_path": "STM32G070.svd"
  },
  "frameworks": [
    "arduino",
    "cmsis",
    "libopencm3",
    "stm32cube",
    "zephyr"
  ],
  "name": "MonkeyPi_STM32_G070RB",
  "upload": {
    "maximum_ram_size": 36864,
    "maximum_size": 131072,
    "protocol": "stlink",
    "protocols": [
      "stlink",
      "jlink",
      "cmsis-dap",
      "blackmagic",
      "mbed"
    ]
  },
  "url": "https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html",
  "vendor": "ST"
}

这里的 MonkeyPi_STM32_G070RB 就是自定义的板子名称;

1.2 Arduino框架下添加board定义

在目录

C:\Users\userName\.platformio\packages\framework-arduinoststm32

下有一个boards.txt文件,需要在这个文件中添加自定义的板子定义,内容可以根据近似的型号 NUCLEO_G071RB 进行修改,内容如下:

# MonkeyPi STM32G070RB board
Nucleo_64.menu.pnum.MonkeyPi_G070RB=MonkeyPi STM32G070RB
Nucleo_64.menu.pnum.MonkeyPi_G070RB.node=NODE_G070RB
Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_size=131072
Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_data_size=32768
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.mcu=cortex-m0plus
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.board=MonkeyPi_STM32_G070RB
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.series=STM32G0xx
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.product_line=STM32G070xx
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.variant=G070RBT
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.cmsis_lib_gcc=arm_cortexM0l_math
Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0

1.3 添加Arduino板的引脚定义

打开目录:

C:\Users\userName\.platformio\packages\framework-arduinoststm32\variants\STM32G0xx

然后在这个目录的G070RB文件夹下复制 variant_generic.h 和 variant_generic.cpp 两个文件并更改名字为 variant_MONKEYPI_STM32_G070RB.h 和 variant_MONKEYPI_STM32_G070RB.cpp ,这个名字是之前自定义的板子名称,需要一致。

然后在variant_MONKEYPI_STM32_G070RB文件中根据板子硬件信息修改引脚定义,最后添加 SystemClock_Config 时钟配置函数如下:

/**
  * @brief  System Clock Configuration
  * @param  None
  * @retval None
  */
WEAK void SystemClock_Config(void)
{
  /* SystemClock_Config can be generated by STM32CubeMX */
#warning "SystemClock_Config() is empty. Default clock at reset is used."
}

并修改文件的定义如下:

#if defined(ARDUINO_MONKEYPI_STM32_G070RB)

注:如果G070RB目录下没有ldscript.ld这个文件,还需要从G071等相似目录下拷贝一个,这个在链接时候需要用到。

2 使用
2.1 新建项目

在pio的home中新建项目,选择自定义开发板型号 MonkeyPi_STM32_G070RB:

在这里插入图片描述

2.2 编写测试Arduino代码

打开项目中 src/main.cpp 文件,编写Arduino代码:

#include <Arduino.h>

void setup() {
  // put your setup code here, to run once:

  pinMode(PB5,OUTPUT);

}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(PB5,1);
  delay(100);
  digitalWrite(PB5,0);
  delay(100);

}
2.3 烧写程序

烧写的方式需要根据自己的需要进行修改,比如我这里使用daplink swd方式下载,需要修改项目的platformio.ini文件:

[env:MonkeyPi_STM32_G070RB]
platform = ststm32
board = MonkeyPi_STM32_G070RB
framework = arduino

upload_protocol = cmsis-dap

修改完成后,点击platformio:Upload按钮即可完成烧写:

在这里插入图片描述
from: https://makerinchina.cn/article_6c6ee14f7cc2.html

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Visual Studio Code中使用PlatformIOArduino框架烧录STM32芯片并进行调试,可以按照以下步骤进行操作: 1. 准备工作: - 确保你已经安装了Visual Studio Code和PlatformIO插件。 - 创建一个新的PlatformIO项目,并选择使用Arduino框架。 - 你还需要连接好STM32开发板,并确保开发板与计算机之间建立了正确的连接。 2. 编写代码: - 在PlatformIO项目中的`src`文件夹下创建一个新的`.cpp`文件,写入你的Arduino代码。 3. 配置调试环境: - 在Visual Studio Code中打开PlatformIO项目。 - 在左侧的侧边栏中,点击调试按钮(调试图标)打开调试视图。 - 点击调试视图中的齿轮图标,选择“添加配置”并选择“PlatformIO: STM32”。 - 这将在`.vscode/launch.json`文件中创建一个调试配置。 4. 调试配置: - 在`.vscode/launch.json`文件中,找到刚刚创建的调试配置,并根据你的配置需求进行修改。 - 确保以下几个配置项是正确的: - "executable": "${command:platformio.device}", - "servertype": "platformio", - "filterStderr": false 5. 开始调试: - 在调试视图中点击绿色的启动按钮开始调试。 - 如果一切顺利,PlatformIO将自动构建、烧录代码到STM32芯片,并开始在调试器中运行你的代码。 - 现在你可以在调试视图中设置断点、单步调试等操作。 请注意,上述步骤假设你已经正确配置了PlatformIOArduino框架,并且你的STM32开发板已经连接并可以正常工作。如果你遇到任何问题,请参考PlatformIO的官方文档或在PlatformIO的社区寻求帮助。 希望这对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值