platformIO 自定义板子方法

PIO 自定义板子方法

1.为boards添加json文件

\platforms\ststm32\boards路径下添加或复制json文件。

并根据添加的板子MCU型号,修改json文件内容,如这边添加的是STM32G030F6系列:添加“bPill_g030.json”文件

{
  "build": {
    "core": "stm32",
    "cpu": "cortex-m0plus",
    "extra_flags": "-DSTM32G0xx -DSTM32G030xx",
    "f_cpu": "64000000L",
    "framework_extra_flags": {
      "arduino": "-D__CORTEX_SC=0"
    },
    "mcu": "stm32g030f6",
    "product_line": "STM32G030xx",
    "variant": "STM32G0xx/G030F6P"
  },
  "debug": {
    "default_tools": [
      "stlink"
    ],
    "jlink_device": "stm32g030f6",
    "onboard_tools": [
      "stlink"
    ],
    "openocd_target": "stm32g0x",
    "svd_path": "STM32G030.svd"
  },
  "frameworks": [
    "arduino"
  ],
  "name": "ST bPill-G030",
  "upload": {
    "maximum_ram_size": 8192,
    "maximum_size": 32768,
    "protocol": "serial",
    "protocols": [
      "blackmagic",
      "cmsis-dap",
      "dfu",
      "jlink",
      "serial",
      "stlink"
    ]
  },
  "url": "https://www.st.com/en/evaluation-tools/nucleo-g030f6.html",
  "vendor": "ST"
}

其中:

"variant": "STM32G0xx/G030F6P" :为PlarromIO的 \packages\framework-arduinoststm32\目录中对应的芯片 variant 文件夹,它是自定义板子IO和Arduino中IO名字对应所在文件夹。

name: 板子名称,可自定义

"protocol": "serial": 首选下载方法为Serial串口

2. 为板子添加variant

packages\framework-arduinoststm32\variants\在arduinoFramework中的 variants文件夹中,保存的是正对某块MCU芯片的板子变种。

包含文件及说明:

  1. boards_entry.txt : 包含通用变体板子声明,简化 board.txt 文件中的板子添加。
  2. generic_clock.c: 包含系统默认时钟配置函数WEAK void SystemClock_Config(void),WEAK弱函数,可在系统主程序中重定义修改系统时钟
  3. PinNamesVar.h:

2.1 复制一份variant_generic.cpp / .h 文件

​ 复制后的文件名修改为variant_XXX.cpp / .h ,这边的XXX一定要和第一步中的Json文件名字一致。修改后的文件夹内文件如下图:
在这里插入图片描述

2.2 修改文件宏定义

​ 修改重命名后的variant_BPILL_G030.cpp文件内的宏定义,宏定义名称格式为ARDUINO_XXX;其中XXX为 json文件名的全大写 形式。如下图:
在这里插入图片描述
​ 同时为generic_clock.c文件添加同用的宏定义,使其支持我们新定义的开发板,如下图:
请添加图片描述

2.3 *.ld 链接文件

如果你的以上文件夹内没有 *.ld 文件,自行想办法去获取对应芯片的 ld 文件,(去MDK目录下看看或使用cubemx生成一个项目试试)。 复制到本目录。

如果添加好编译仍然有问题,请试着在json中添加以下配置:
请添加图片描述

修改json文件后需要使用PIO重新 新建项目测试。


版权声明:本文为kimiyang123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。