你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G0-Platformio平台下使用libopencm3库

[复制链接]
STMCU小助手 发布时间:2023-2-23 21:00
使用Platformio平台的libopencm3开发框架来开发STM32G0,开发环境为VSCode+PIO插件,这里以开发STM32G070RB芯片为例介绍。

1 自定义开发板
由于使用的STM32G070RB在pio的libopencm3框架中没有这个型号,因此首先需要先定义一个自定义开发板型号;
  • 安装ST-STM32 platforms
    在Platformio的platforms中搜索STM32,然后安装ST-STM32 platforms框架,
  • 根据已有的相似型号进行更改配置json文件
    在PIO安装目录找到对应平台开发板文件夹,比如我这里pio安装在默认的用户目录,则STM32开发板的路径如下:

  1. C:\Users\userName\.platformio\platforms\ststm32\boards
复制代码


复制一个相近的板子型号的json配置文件命名为 MonkeyPi_STM32_G070RB.json,更改mcu型号、svd等信息;这里复制修改 nucleo_g071rb 这个json文件,修改后如下:
  1. 1{
  2. 2  "build": {
  3. 3    "core": "stm32",
  4. 4    "cpu": "cortex-m0plus",
  5. 5    "extra_flags": "-DSTM32G0xx -DSTM32G070xx",
  6. 6    "f_cpu": "64000000L",
  7. 7    "framework_extra_flags": {
  8. 8      "arduino": "-D__CORTEX_SC=0"
  9. 9    },
  10. 10    "mcu": "stm32g070rbt6",
  11. 11    "product_line": "STM32G070xx",
  12. 12    "variant": "STM32G0xx/G070RBT"
  13. 13  },
  14. 14  "debug": {
  15. 15    "default_tools": [
  16. 16      "stlink"
  17. 17    ],
  18. 18    "jlink_device": "STM32G070RB",
  19. 19    "onboard_tools": [
  20. 20      "stlink"
  21. 21    ],
  22. 22    "openocd_target": "stm32g0x",
  23. 23    "svd_path": "STM32G070.svd"
  24. 24  },
  25. 25  "frameworks": [
  26. 26    "arduino",
  27. 27    "cmsis",
  28. 28    "libopencm3",
  29. 29    "stm32cube",
  30. 30    "zephyr"
  31. 31  ],
  32. 32  "name": "MonkeyPi_STM32_G070RB",
  33. 33  "upload": {
  34. 34    "maximum_ram_size": 36864,
  35. 35    "maximum_size": 131072,
  36. 36    "protocol": "stlink",
  37. 37    "protocols": [
  38. 38      "stlink",
  39. 39      "jlink",
  40. 40      "cmsis-dap",
  41. 41      "blackmagic",
  42. 42      "mbed"
  43. 43    ]
  44. 44  },
  45. 45  "url": "https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html",
  46. 46  "vendor": "ST"
  47. 47}
复制代码

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



微信图片_20230222214924.png


  • 在项目目录 src下新建主程序文件 main.c ,内容如下:

  1. 1/**
  2. 2 * @file main.c
  3. 3 * @author MakerInChina (makerinchina.cn)
  4. 4 * @brief
  5. 5 * @version 0.01
  6. 6 * @date 2022-09-04
  7. 7 *
  8. 8 * @copyright Copyright (c) 2022
  9. 9 *
  10. 10 */
  11. 11
  12. 12#include <libopencm3/stm32/rcc.h>
  13. 13#include <libopencm3/stm32/gpio.h>
  14. 14
  15. 15int main(void)
  16. 16{
  17. 17
  18. 18    //system clock
  19. 19    rcc_clock_setup(&rcc_clock_config[RCC_CLOCK_CONFIG_HSI_PLL_64MHZ]);
  20. 20
  21. 21    //gpio setting
  22. 22    rcc_periph_clock_enable(RCC_GPIOC);
  23. 23    gpio_mode_setup(GPIOC,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,GPIO12);
  24. 24
  25. 25    while (1)
  26. 26    {
  27. 27        //toggle gpio
  28. 28        gpio_toggle(GPIOC,GPIO12);
  29. 29
  30. 30        for(int i=0; i<4000000; i++){
  31. 31            __asm__("nop;");
  32. 32        }
  33. 33    }
  34. 34
  35. 35    return 0;
  36. 36}
复制代码


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

3 编译和下载
  • 下载方式需要根据自己的硬件进行修改,在项目的platformio.ini文件中可以配置,这里使用DAPLink SWD方式下载,因此将upload_protocol更改为cmsis-dap,则platformio.ini文件如下:

  1. 1[env:MonkeyPi_STM32_G070RB]
  2. 2platform = ststm32
  3. 3board = MonkeyPi_STM32_G070RB
  4. 4framework = libopencm3
  5. 5
  6. 6upload_protocol=cmsis-dap
  7. 7debug_tool=cmsis-dap
复制代码


  • 然后就可以进行烧录和调试了(使用openocd方式进行下载和调试):

微信图片_20230222214916.png
转载自:MakerInChina.cn



收藏 评论0 发布时间:2023-2-23 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版