这里写自定义目录标题
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芯片的板子变种。
包含文件及说明:
boards_entry.txt
: 包含通用变体板子声明,简化 board.txt 文件中的板子添加。generic_clock.c
: 包含系统默认时钟配置函数WEAK void SystemClock_Config(void)
,WEAK弱函数,可在系统主程序中重定义修改系统时钟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重新 新建项目测试。