0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用platformio平台和Arduino框架开发STM32G0

CHANBAEK 来源:电子技术攻城狮 作者:MakerInChina.cn 2023-01-17 11:05 次阅读

使用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文件 进行修改,内容如下:

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 就是自定义的板子名称;

1.2 Arduino框架下添加board定义

在目录

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

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

1# MonkeyPi STM32G070RB board
 2Nucleo_64.menu.pnum.MonkeyPi_G070RB=MonkeyPi STM32G070RB
 3Nucleo_64.menu.pnum.MonkeyPi_G070RB.node=NODE_G070RB
 4Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_size=131072
 5Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_data_size=32768
 6Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.mcu=cortex-m0plus
 7Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.board=MonkeyPi_STM32_G070RB
 8Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.series=STM32G0xx
 9Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.product_line=STM32G070xx
10Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.variant=G070RBT
11Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.cmsis_lib_gcc=arm_cortexM0l_math
12Nucleo_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 时钟配置函数如下:

1/**
 2  * @brief  System Clock Configuration
 3  * @param  None
 4  * @retval None
 5  */
 6WEAK void SystemClock_Config(void)
 7{
 8  /* SystemClock_Config can be generated by STM32CubeMX */
 9#warning "SystemClock_Config() is empty. Default clock at reset is used."
10}

并修改文件的定义如下:

#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代码:

1#include 
 2
 3void setup() {
 4  // put your setup code here, to run once:
 5
 6  pinMode(PB5,OUTPUT);
 7
 8}
 9
10void loop() {
11  // put your main code here, to run repeatedly:
12
13  digitalWrite(PB5,1);
14  delay(100);
15  digitalWrite(PB5,0);
16  delay(100);
17
18}
2.3 烧写程序

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

1[env:MonkeyPi_STM32_G070RB]
2platform = ststm32
3board = MonkeyPi_STM32_G070RB
4framework = arduino
5
6upload_protocol = cmsis-dap

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2264

    文章

    10852

    浏览量

    354094
  • 开发板
    +关注

    关注

    25

    文章

    4872

    浏览量

    96971
  • Boards
    +关注

    关注

    0

    文章

    3

    浏览量

    10188
  • Arduino
    +关注

    关注

    187

    文章

    6455

    浏览量

    186443
  • vscode
    +关注

    关注

    1

    文章

    153

    浏览量

    7640
收藏 人收藏

    评论

    相关推荐

    PlatformIO使用Arduino框架开发STM32

      其实使用Arduino框架开发STM32并不新鲜,但以前大部分人是用Arduino IDE开发的,本文介绍一下在VS Code中,通过
    发表于 11-23 18:21 9次下载
    <b class='flag-5'>PlatformIO</b>使用<b class='flag-5'>Arduino</b><b class='flag-5'>框架开发</b><b class='flag-5'>STM32</b>

    STM32G0开发笔记:FreeRTOS和FreeModbus库使用

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下为FreeR
    的头像 发表于 01-16 14:44 5320次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:FreeRTOS和FreeModbus库使用

    STM32G0开发笔记:FreeRTOS和CLI组件使用

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下为FreeR
    的头像 发表于 01-16 14:47 3244次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:FreeRTOS和CLI组件使用

    STM32G0开发笔记:使用FreeRTOS系统的队列Queue

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面为使用Fre
    的头像 发表于 01-16 14:50 1300次阅读

    STM32G0开发笔记:使用FreeRTOS系统

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面为使用Fre
    的头像 发表于 01-16 15:07 2268次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:使用FreeRTOS系统

    STM32G0开发笔记:使用ADC进行NTC温度采集

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下使用ADC进
    的头像 发表于 01-16 15:12 8816次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:使用ADC进行NTC温度采集

    STM32G0开发笔记:用PWM来实现LED呼吸灯效果

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面使用PWM来
    的头像 发表于 01-16 15:15 2162次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:用PWM来实现LED呼吸灯效果

    STM32G0开发笔记:EEPROM M24C02的使用方法

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下为EEPRO
    的头像 发表于 01-16 15:19 2667次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:EEPROM M24C02的使用方法

    STM32G0开发笔记:SD卡模块的使用方法

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面介绍SD卡模
    的头像 发表于 01-19 16:27 2124次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:SD卡模块的使用方法

    STM32G0开发笔记:SPI接口的基本使用

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面介绍SPI接
    的头像 发表于 01-17 10:38 2985次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:SPI接口的基本使用

    STM32G0开发笔记:多通道ADC与DMA的使用

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下为多通道AD
    的头像 发表于 01-17 10:41 6672次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:多通道ADC与DMA的使用

    STM32G0开发笔记:定时器timer的基本使用方法

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下为定时器ti
    的头像 发表于 01-17 10:43 3539次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:定时器timer的基本使用方法

    STM32G0开发笔记:串口中断的使用

    使用Platformio平台的libopencm3开发框架开发STM32G0,以下为串口中断的
    的头像 发表于 01-17 10:46 2230次阅读

    STM32G0开发笔记:GPIO接按键的使用方式

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面为GPIO接
    的头像 发表于 01-17 10:48 1681次阅读

    STM32G0开发笔记:LED灯示例

    使用Platformio平台的libopencm3开发框架开发STM32G0,下面为LED灯示
    的头像 发表于 01-17 10:52 1347次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发</b>笔记:LED灯示例