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

STM32G0-Platformio平台下使用libopencm3库

[复制链接]
STMCU小助手 发布时间:2023-2-23 21:00
使用Platformio平台的libopencm3开发框架来开发STM32G0,开发环境为VSCode+PIO插件,这里以开发STM32G070RB芯片为例介绍。
8 P1 W# m  i! g9 Y, z! ]
1 自定义开发板
由于使用的STM32G070RB在pio的libopencm3框架中没有这个型号,因此首先需要先定义一个自定义开发板型号;
  • 安装ST-STM32 platforms
    % @* J1 y; u# ?/ b在Platformio的platforms中搜索STM32,然后安装ST-STM32 platforms框架,
  • 根据已有的相似型号进行更改配置json文件+ M. J; D9 b# S9 ^. g! S. b
    在PIO安装目录找到对应平台开发板文件夹,比如我这里pio安装在默认的用户目录,则STM32开发板的路径如下:

    + Y2 |* Y5 i. b- f' a
  1. C:\Users\userName\.platformio\platforms\ststm32\boards
复制代码

2 {# X& d& C$ N9 M$ J4 A/ H% w) F6 X
复制一个相近的板子型号的json配置文件命名为 MonkeyPi_STM32_G070RB.json,更改mcu型号、svd等信息;这里复制修改 nucleo_g071rb 这个json文件,修改后如下:
  1. 1{
    + [; j) q$ [4 w, l
  2. 2  "build": {8 x7 t8 c" k, X8 h) c5 d; G
  3. 3    "core": "stm32",6 V0 a# ?( H: t0 g9 c4 {
  4. 4    "cpu": "cortex-m0plus",
    ( r" M. c/ C" x1 m6 [  q3 \. m" m
  5. 5    "extra_flags": "-DSTM32G0xx -DSTM32G070xx",
    9 i, t, S9 m% v% w  I( O2 N" j$ e
  6. 6    "f_cpu": "64000000L",0 V5 Y6 K+ R: X7 ?
  7. 7    "framework_extra_flags": {" _5 f: N8 e# K1 {5 l
  8. 8      "arduino": "-D__CORTEX_SC=0"
    $ A/ r* V* z) t( J6 [" e
  9. 9    }," T; F. Z6 M- k
  10. 10    "mcu": "stm32g070rbt6",2 N4 W8 ]" Q5 w& C4 f0 ^) a# L
  11. 11    "product_line": "STM32G070xx",
    4 u% _: D6 F* j
  12. 12    "variant": "STM32G0xx/G070RBT"2 R4 M* A! `7 ?/ c. N; m( w+ o2 ^% G
  13. 13  },9 b. ~8 w7 r5 i6 B& w
  14. 14  "debug": {
    - b4 w8 [) L. \, v
  15. 15    "default_tools": [' J7 r5 ~9 h4 P0 l8 G
  16. 16      "stlink". ?/ x8 C6 U" Z5 A
  17. 17    ],% Q- i4 P, j( F2 n4 l
  18. 18    "jlink_device": "STM32G070RB",
    3 @1 N. Q0 y. ?4 g+ V  R: l+ I
  19. 19    "onboard_tools": [
    : P' `  M1 Z- a* g, _4 b  F
  20. 20      "stlink"
    ! R* b, [" x3 e! f7 Q, J- }2 @7 k. i
  21. 21    ],: [; H6 h8 I  x. p# @8 n
  22. 22    "openocd_target": "stm32g0x",4 e/ R' x* z3 W/ P& D, ^+ a8 J7 H6 |
  23. 23    "svd_path": "STM32G070.svd"7 a2 g2 f3 d- c( K! r" L  b- q
  24. 24  },
    3 I7 u$ P# S% K4 B4 N) O
  25. 25  "frameworks": [1 G% q8 U& t9 Q" r: V
  26. 26    "arduino",
    4 g2 d+ J$ P! \& ~9 `) K
  27. 27    "cmsis",9 Y' {# o, W' H+ b1 {
  28. 28    "libopencm3",
    ; K0 [5 I- @. X$ v2 c5 B2 c& h# w6 @
  29. 29    "stm32cube",
    3 T2 Z8 b% K: q4 x  X, I
  30. 30    "zephyr"% l1 s2 ?4 C; s# W9 L! C
  31. 31  ],7 J. v1 ?$ A3 @
  32. 32  "name": "MonkeyPi_STM32_G070RB",4 x( h  M' m# s8 u8 ?5 l
  33. 33  "upload": {, a8 J/ V- k# x# {5 r2 Y
  34. 34    "maximum_ram_size": 36864,# Z' h2 _9 E! X, j; g: x/ ~: [
  35. 35    "maximum_size": 131072,+ Q- V; b/ i3 b
  36. 36    "protocol": "stlink",( j- z$ E7 ^3 s) L9 `& {
  37. 37    "protocols": [, c; o6 j+ S- \7 ]' d. e
  38. 38      "stlink",
    $ n) f5 a0 W5 ^
  39. 39      "jlink",1 a7 A9 X7 \" f; ]  @
  40. 40      "cmsis-dap",
    6 z8 I! v6 U- E$ I7 f6 b, r9 G
  41. 41      "blackmagic",' u3 y& J8 f, M6 P% n* ]! J; a* A
  42. 42      "mbed"8 o! g$ E! @: [. s& [- ~
  43. 43    ]" T+ C% ~. f* o0 _; P6 h
  44. 44  },
    - O1 w, x$ X" U/ Q) t" H- W
  45. 45  "url": "https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html",
    # c- k2 K" q' c6 R
  46. 46  "vendor": "ST"
    4 B8 P1 R* V2 N/ `# Y- U( w' ?
  47. 47}
复制代码
- |) L4 Q& D. w& ]; b) X5 _5 Q3 o$ B
2 新建测试项目
  • 新建项目,并选择开发板型号为自定义板子名称 MonkeyPi_STM32_G070RB,开发框架选择libopencm3

    3 f7 t: k$ n6 K; G

  ~' Q. G! j% r

+ d9 g* Y! K; e8 W 微信图片_20230222214924.png 7 H3 p$ `5 b' F( s
/ \8 V( E! a" @4 h' q7 I; M

+ b* |1 S/ a5 `! M# a: w
  • 在项目目录 src下新建主程序文件 main.c ,内容如下:
    / ?2 h1 k2 C/ _, f- v8 A- l
  1. 1/**
    3 T: `0 H2 p9 L4 j: N# R, ?' e
  2. 2 * @file main.c
    9 i( b* [# X3 q0 b6 }7 V
  3. 3 * @author MakerInChina (makerinchina.cn)
    * w9 T- w: I* \9 U
  4. 4 * @brief
    . r* R2 p( O0 s
  5. 5 * @version 0.01
    # |, E" S5 t' H$ \) b( e( u# P
  6. 6 * @date 2022-09-04  D9 v( M1 p4 B  k
  7. 7 *
    ( W) `, ~7 B" b  g* v
  8. 8 * @copyright Copyright (c) 2022
    / A$ d5 Z% [, Z8 ?( [0 @( S) h
  9. 9 *
    2 f/ d3 i  O5 [+ x% t# B
  10. 10 */- f% p* Y' a' N
  11. 11
    " E6 T& X0 T; l+ b
  12. 12#include <libopencm3/stm32/rcc.h>
    ' k2 K! x+ ]8 `$ R
  13. 13#include <libopencm3/stm32/gpio.h>
    2 g; l% J! y7 q8 D0 A: e
  14. 14
    ( v6 D2 Q% ^. x
  15. 15int main(void)
    7 _, i5 V. x( D& Z) U- r
  16. 16{
    . t5 L4 G8 x0 l5 E1 d6 M. m
  17. 17
    6 l+ D7 v. _# o4 Z+ i6 Y' J. q
  18. 18    //system clock
    5 `- N% P2 `6 S
  19. 19    rcc_clock_setup(&rcc_clock_config[RCC_CLOCK_CONFIG_HSI_PLL_64MHZ]);6 h! e8 t, |8 j: b# B
  20. 20
    * f6 H' |5 S& r( m2 I# T
  21. 21    //gpio setting
    . _' p6 X$ d- f6 Y& i- f
  22. 22    rcc_periph_clock_enable(RCC_GPIOC);7 l2 f: K6 A" X8 O' ~$ E/ E$ H) l
  23. 23    gpio_mode_setup(GPIOC,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,GPIO12);
    $ D# z0 x4 @6 r* U- R
  24. 24
    9 P$ x/ N  l1 D' b' l; r
  25. 25    while (1)1 C1 v( s0 R/ E& F$ c
  26. 26    {) ?, A. `: u- S- w6 \: S
  27. 27        //toggle gpio& [, G  _; B+ D4 N4 E+ ?$ r
  28. 28        gpio_toggle(GPIOC,GPIO12);! Y  F+ g3 I6 H$ r3 ]& l
  29. 29; z0 y  F$ ^1 ~) I
  30. 30        for(int i=0; i<4000000; i++){: j% a/ u5 O# h; w' D
  31. 31            __asm__("nop;");* `6 h6 i0 C; I& @5 I
  32. 32        }
    ) ~6 [; ]" k* ?4 n0 K1 w0 {* i4 t
  33. 33    }
    8 Y7 h8 s& K+ n1 x
  34. 34
    + `8 {  S5 B6 B( A: a  w
  35. 35    return 0;; P$ f, `/ V2 c
  36. 36}
复制代码

% _0 @& B) a" o7 o3 P' C7 N4 a: u2 \/ @6 J3 Q. ], t" @
这个测试程序中 先使用 rcc_clock_setup 函数配置系统时钟为64MHz,然后使用 gpio_mode_setup 函数设置GPIO模式,最后调用 gpio_toggle 对GPIO进行翻转操作。
. N6 x. y% X. V! |% o
3 编译和下载
  • 下载方式需要根据自己的硬件进行修改,在项目的platformio.ini文件中可以配置,这里使用DAPLink SWD方式下载,因此将upload_protocol更改为cmsis-dap,则platformio.ini文件如下:

    % H8 g  I  V, s' L# g  g5 V* E4 D! U
  1. 1[env:MonkeyPi_STM32_G070RB]
    / ~) W; o' ]% W, J( T; K1 L" j3 @2 ~1 q! E
  2. 2platform = ststm32
    4 o. i+ `+ G7 q% m& q  d9 E
  3. 3board = MonkeyPi_STM32_G070RB
    9 r/ ]9 ~+ B+ g7 `& k8 J' F
  4. 4framework = libopencm38 ^) ]8 T& W: {$ d
  5. 5, N/ |9 g% A3 i" y% l# x
  6. 6upload_protocol=cmsis-dap) @5 f# v( Z4 `, Z
  7. 7debug_tool=cmsis-dap
复制代码
7 p9 h4 H! F. a8 g1 m

1 s* \6 q$ |; a+ s/ x; j# e
  • 然后就可以进行烧录和调试了(使用openocd方式进行下载和调试):

    7 H: P, o$ h  W4 [9 C2 w$ X7 m5 o
微信图片_20230222214916.png + H/ `6 P0 D3 w; U4 ], d1 X
转载自:MakerInChina.cn: t3 L, L7 p! o6 d
7 b. |+ F& V- D0 v+ ~! y7 v
5 W2 k" T  z3 s' }9 {8 E. G

# y( e5 M$ ^, Z1 Q, W
赞 收藏 评论0 发布时间:2023-2-23 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版