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

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

3天内不再提示

STM32G0开发笔记:使用libopencm3库

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

使用Platformio平台的libopencm3开发框架来开发STM32G0,开发环境为VSCode+PIO插件,这里以开发STM32G070RB芯片为例介绍。

1 自定义开发板

由于使用的STM32G070RB在pio的libopencm3框架中没有这个型号,因此首先需要先定义一个自定义开发板型号;

  • 安装ST-STM32 platforms

    在Platformio的platforms中搜索STM32,然后安装ST-STM32 platforms框架,

  • 根据已有的相似型号进行更改配置json文件

    在PIO安装目录找到对应平台开发板文件夹,比如我这里pio安装在默认的用户目录,则STM32开发板的路径如下:

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

复制一个相近的板子型号的json配置文件命名为 MonkeyPi_STM32_G070RB.json,更改mcu型号、svd等信息;这里复制修改 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}

2 新建测试项目

  • 新建项目,并选择开发板型号为自定义板子名称 MonkeyPi_STM32_G070RB,开发框架选择libopencm3:

  • 在项目目录 src下新建主程序文件 main.c ,内容如下:
1/**
 2 * @file main.c
 3 * @author MakerInChina (makerinchina.cn)
 4 * @brief 
 5 * @version 0.01
 6 * @date 2022-09-04
 7 * 
 8 * @copyright Copyright (c) 2022
 9 * 
10 */
11
12#include 
13#include 
14
15int main(void)
16{
17
18    //system clock
19    rcc_clock_setup(&rcc_clock_config[RCC_CLOCK_CONFIG_HSI_PLL_64MHZ]);
20
21    //gpio setting
22    rcc_periph_clock_enable(RCC_GPIOC);
23    gpio_mode_setup(GPIOC,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,GPIO12);
24
25    while (1)
26    {
27        //toggle gpio
28        gpio_toggle(GPIOC,GPIO12);
29
30        for(int i=0; i<4000000; i++){
31            __asm__("nop;");
32        }
33    }
34
35    return 0;
36}

这个测试程序中 先使用 rcc_clock_setup 函数配置系统时钟为64MHz,然后使用 gpio_mode_setup 函数设置GPIO模式,最后调用 gpio_toggle 对GPIO进行翻转操作。

3 编译和下载

  • 下载方式需要根据自己的硬件进行修改,在项目的platformio.ini文件中可以配置,这里使用DAPLink SWD方式下载,因此将upload_protocol更改为cmsis-dap,则platformio.ini文件如下:
1[env:MonkeyPi_STM32_G070RB]
2platform = ststm32
3board = MonkeyPi_STM32_G070RB
4framework = libopencm3
5
6upload_protocol=cmsis-dap
7debug_tool=cmsis-dap
  • 然后就可以进行烧录和调试了(使用openocd方式进行下载和调试):

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

    关注

    146

    文章

    16016

    浏览量

    343598
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348736
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93991
  • JSON
    +关注

    关注

    0

    文章

    111

    浏览量

    6815
  • PIO
    PIO
    +关注

    关注

    0

    文章

    18

    浏览量

    6117
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统的队列Queue。
    的头像 发表于 01-16 14:50 962次阅读

    STM32G0开发笔记:使用FreeRTOS系统

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

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

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

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

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

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

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

    STM32G0开发笔记:I2C接口软件模拟与GXHT30温湿度模块

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下使用软件模拟I2C总线时序,并用它来读取GXHT30温湿度数据。
    的头像 发表于 01-19 16:24 2859次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:I2C接口软件模拟与GXHT30温湿度模块

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

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

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

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

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

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

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

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

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

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

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

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为GPIO接按键的使用方式。
    的头像 发表于 01-17 10:48 1327次阅读

    STM32G0开发笔记:LED灯示例

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