使用platformio平台和Arduino框架开发STM32G0,开发环境使用VSCode+PlatformIO插件;
因为Platformio中没有自己需要的STM32G070RB这个型号的板子,因此需要自己定义一个开发板型号。
首先这个是STM32系列,因此其boards目录如下(这里pio安装在默认位置):
C:\\Users\\userName\\.platformio\\platforms\\ststm32\\boards
在这个目录新建一个board描述文件:MonkeyPi_STM32_G070RB.json,因为和STM32G071接近,因此可以复制 nucleo_g071rb.json文件 进行修改,内容如下:
1{2"build": {3"core":"stm32",4"cpu":"cortex-m0plus",5"extra_flags":"-DSTM32G0xx -DSTM32G070xx",6"f_cpu":"64000000L",7"framework_extra_flags": {8"arduino":"-D__CORTEX_SC=0"9},10"mcu":"stm32g070rbt6",11"product_line":"STM32G070xx",12"variant":"STM32G0xx/G070RBT"13},14"debug": {15"default_tools": [16"stlink"17],18"jlink_device":"STM32G070RB",19"onboard_tools": [20"stlink"21],22"openocd_target":"stm32g0x",23"svd_path":"STM32G070.svd"24},25"frameworks": [26"arduino",27"cmsis",28"libopencm3",29"stm32cube",30"zephyr"31],32"name":"MonkeyPi_STM32_G070RB",33"upload": {34"maximum_ram_size":36864,35"maximum_size":131072,36"protocol":"stlink",37"protocols": [38"stlink",39"jlink",40"cmsis-dap",41"blackmagic",42"mbed"43]44},45"url":"https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html",46"vendor":"ST"47}
这里的 MonkeyPi_STM32_G070RB 就是自定义的板子名称;
在目录
C:\\Users\\userName\\.platformio\\packages\\framework-arduinoststm32
下有一个boards.txt文件,需要在这个文件中添加自定义的板子定义,内容可以根据近似的型号 NUCLEO_G071RB 进行修改,内容如下:
1# MonkeyPi STM32G070RB board2Nucleo_64.menu.pnum.MonkeyPi_G070RB=MonkeyPi STM32G070RB3Nucleo_64.menu.pnum.MonkeyPi_G070RB.node=NODE_G070RB4Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_size=1310725Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_data_size=327686Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.mcu=cortex-m0plus7Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.board=MonkeyPi_STM32_G070RB8Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.series=STM32G0xx9Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.product_line=STM32G070xx10Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.variant=G070RBT11Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.cmsis_lib_gcc=arm_cortexM0l_math12Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0
打开目录:
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 时钟配置函数如下:
1/** 2 *@briefSystem Clock Configuration 3 *@paramNone 4 *@retvalNone 5 */6WEAKvoidSystemClock_Config(void)7{8/* SystemClock_Config can be generated by STM32CubeMX */9#warning "SystemClock_Config() is empty. Default clock at reset is used."10}
并修改文件的定义如下:
#ifdefined(ARDUINO_MONKEYPI_STM32_G070RB)
注:如果G070RB目录下没有ldscript.ld这个文件,还需要从G071等相似目录下拷贝一个,这个在链接时候需要用到。
在pio的home中新建项目,选择自定义开发板型号 MonkeyPi_STM32_G070RB:
打开项目中 src/main.cpp 文件,编写Arduino代码:
1#include
23voidsetup(){4// put your setup code here, to run once:56pinMode(PB5,OUTPUT);78}910voidloop(){11// put your main code here, to run repeatedly:1213digitalWrite(PB5,1);14delay(100);15digitalWrite(PB5,0);16delay(100);1718}
烧写的方式需要根据自己的需要进行修改,比如我这里使用daplink swd方式下载,需要修改项目的platformio.ini文件:
1[env:MonkeyPi_STM32_G070RB]2platform= ststm323board= MonkeyPi_STM32_G070RB4framework= arduino56upload_protocol= cmsis-dap
修改完成后,点击platformio:Upload按钮即可完成烧写:
全部0条评论
快来发表一下你的评论吧 !