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

【经验分享】如何使用 Eclipse 和 GCC 搭建 STM32 环境

[复制链接]
STMCU小助手 发布时间:2022-3-2 23:00
前言1 V2 i! q9 }8 C1 J6 [1 A- M
虽然现在绝大部分的客户都是使用 Keil 和 IAR 这类收费的 IDE,对于很多小型或刚起步的公司来说,这无疑是一笔不小的费用,所以本文将介绍如何使用 Eclipse 和 GCC 这免费软件搭建 STM32 的环境./ _& t  n- }3 B8 F- k/ f# W5 o

; w, F; N9 c6 b1.编译环境 Eclipse/ W" b, x4 f4 E* j
1.1 下载 Eclipse6 l* V0 @, J4 D( A0 T* U' U8 u* e% |
  1. 首先通过以下连接 Eclipse installer,
复制代码
3 u& I. ?) L0 Y* r& n; F3 @
下载软件/ U$ P$ \- K8 v9 W

+ Q, p" G: [8 O 7RU76C(A3D0GVE9V{4U1ZTS.png " [2 h! X6 \1 v/ k0 f

1 y4 K" z' j0 T选择 Eclipse IDE for C/C++ Developers
# b, Z& X( n+ M8 I4 h" _
- \) J8 T8 X8 H& r/ } _ZF2R~7HU`]KNW~_8O7(H`C.png : e! i) t6 U" f# W  B
3 K" S) y+ h1 a& q6 k9 c4 e
安装成功0 P+ U8 w# m3 \1 L% t
1 u( u( P6 f* {0 w9 `/ u
7L`]1LC0Q])6I[V75R3(XC7.png
, q% v" e& |# j& r
0 n9 `* Q" H  ^1.2 安装 Eclipse 插件 – C/C++工具) f% {1 P0 J4 o1 R- W! c
打开 Eclipse8 ?4 {' m9 y# `* i+ N7 Q, R
, Q9 D% t/ |: q$ t  M
~(E@KMXYEY3V$`PL`_301BJ.png
  [# @9 Z- f7 I0 s
5 [2 t- E- X8 s- u* n- I安装新软件
5 I/ N" U0 G. }3 w  W; K) A. E1 _
7 a3 l5 p) G" ~' M GY9PHB5%H2OFBMLY}V)PB3U.png 4 c2 j4 @* t2 ~6 r
2 x; M$ w: M$ w8 }8 h7 [
在 Work with 下选择 CDT- P- ~$ F( {4 J. V* x1 G! X' ]* @
: s6 G5 R7 i4 Z( _! t" E
5Q(4HWK]F9@I)SZ7%~E9)PA.png
8 C( T6 K5 J& ]: j  C+ A5 }* {8 Z2 M
然后在 name 下面选择 CDT Main Features. U, Z) B6 f/ x# y) P& L% r3 J- t' B
, Y) l$ j3 L* Z+ I  i
}IW0A{CK5223BR)~94%6N~T.png
' m7 X  t6 T+ Z* Z6 o
/ n. i) f' J0 H: P6 j3 D3 v/ {" T6 n 55Y{]SJ1J3%(9{%G9$B291C.png 5 a$ F! _. n. s4 v: ]- @& s6 I8 S

5 n8 g0 U$ A9 l& @" I6 e一路 NEXT,安装完成之后就重启一下 Eclipse。
2 K4 F$ n$ @7 |% W7 _
1 {3 i" r4 _# i3 {3 S. x: Z7 ^1.3 安装 Eclipse 插件 – 编译工具
. t' l" h5 {( F8 B, i& Z. y在 Eclipse 的 install new software 里面添加如下信息:
; V7 R- J: V7 b  oName: GNU ARM Eclipse Plug-ins
* C/ U$ a0 K- F3 ELocation: http://gnuarmeclipse.sourceforge.net/updates! q7 d) X$ O" Z8 e- ~) w

" r1 U. Q4 V+ v5 X+ x PGF2UK(ZACO~Q{UDBU_%]NU.png
3 B. ?1 a/ A( q/ g! ^
$ k1 h& _$ ^1 ?- j UWR(WVM9_CV99OET1MVIS$P.png , `8 p7 u- Q3 H! p" M' i

" v1 O" u  Q: i) L" n# xSourceforge 比较难连,如果连接不上,建议用浏览器下载,然后导入,只是把 location 改成本地地址即可。
; d% r- T6 _: E! a( P
7 x/ b. a/ {1 I) J. Z; v5 T 5CXSJT1AAHF_56NRCTVQHEN.png 9 X3 s3 u; w4 H" W3 h; q: h
6 V3 z+ E( E1 [
Eclipse 使用6 T7 N) D2 Z( c, ^2 @, I. J1 M& G
新建工程 – hello world !
2 O* S8 u, _- T& w* G
首先打开 Eclipse,File->New->C project  Z+ G. C$ A9 i6 b. Q

! T$ T. U" o9 x7 c XSYM3HF$}1`S88K)STFVQ7P.png 4 i7 j+ T5 A( S+ L% q& r

% ?, b( Z9 s2 Z+ U6 j6 S+ d) c选择项目名字,我这里用的是 F411 作为例子,所以我选择 STM32F4xx C/C++ project。如果你是其他的系列,就根据情况选用其他工程。交叉编译工具只能选择 GCC,如果你安装了别的,也可以选用别的。
5 U" }+ ~: D+ A+ `; z6 l5 `" N; [$ c, ^& Z
FV}UZ}GE(Z)~BMN9UK$(L7X.png 4 b- E9 G/ j8 n% o$ l
/ V) R9 H/ ]# a
根据你芯片的大小进行配置:8 I% E' N1 r: i0 n' Y. k
Chip family :先择芯片的类型2 _3 e% R! o3 |
Flash Size:根据 FLASH 大小填写
2 |- S: F9 }9 ~$ Q; D+ v/ QExternal clock :填写实用的晶振频率,也可以不填后期修改。
- H: m: x- u0 G/ mContent:一般选用 Empty,里面只有一个 LED 例子。" a, B4 I3 W( Z% {, A# q

$ `7 h4 ~- y( t8 ^2 I( r( L ER_`A@DKN~9_TAX[ES}F7AJ.png # ]: R9 o) q, A$ v/ A+ r- Z
1 Z( d0 @& D" C' w
U[4BR{V[CM{UB]9~69O_K%8.png 4 o% z* F  z  Y( K
# ?  z1 I! J, K2 v0 u
( B# R( }, v- J* i
选好工具链,就完成所有配置。
8 B6 n# D! R& @Test code:- R( J, M3 }2 E, [4 d- k4 `6 Q
填写以下测试代码,就可以看到 Nucleo 板上的 LED 在不断地闪。
, }4 ~8 U/ B1 @; R4 L, a
  1. int
    . ^* w' z) I" `) H
  2. main(int argc, char* argv[])
    ( ?: Q6 c, Z& \
  3. {
    1 z8 m8 D! h' ?' {! Q$ r$ A
  4. // Send a greeting to the trace device (skipped on Release).8 ^7 z5 [( Q  [/ C) \0 e) c
  5. trace_puts("Hello ARM World!");3 R  k+ h3 T& a0 w0 N3 p5 e! i
  6. // At this stage the system clock should have already been configured
    1 D1 u# {: Q$ ~! c# C
  7. // at high speed.
    ; N1 K; A" l! W4 ^
  8. trace_printf("System clock: %u Hz\n", SystemCoreClock);. [1 Y1 `  p0 a% A3 K
  9. timer_start();/ D& Z# H1 E. p4 }
  10. blink_led_init();
    ! ^7 l% i- f5 p3 h1 {0 A9 s" q

  11. . P/ w2 Y9 [. @
  12. uint32_t seconds = 0;% T- y# i0 G% c- F
  13. // Infinite loop5 G, c# Y! H- i$ h& S; s( E( L/ j* r- c
  14. while (1)
    # N: x0 ?  H1 P# e/ _! k- H% _$ h
  15. {  Z1 J( u/ a9 i- P% I, Y
  16. blink_led_on();) F6 J0 j" G3 R
  17. timer_sleep(seconds == 0 ? TIMER_FREQUENCY_HZ : BLINK_ON_TICKS);* V5 K# M: l' v0 a# P0 S2 K
  18. blink_led_off();
    1 V& W- Q* t3 u# v( q
  19. timer_sleep(BLINK_OFF_TICKS);
    ) |6 c) K" }, M) J
  20. ++seconds;, ]8 t3 f6 U- E4 o* Q
  21. // Count seconds on the trace device.
    ) H; l) t8 ^, |! F1 C, ~5 T/ a. e+ n
  22. trace_printf("Second %u\n", seconds);/ W4 }1 N" x- T. V
  23. }
    8 r* E/ I7 J5 j
  24. // Infinite loop, never return.! a* L( [% [, R" c% k' e( V
  25. }
复制代码

. [2 U3 D( I7 Y" e* V) e& w+ K: z. w+ k4 \' O  e5 S
赞 收藏 评论1 发布时间:2022-3-2 23:00

举报

1个回答
huahuahnu 回答时间:2023-11-27 11:15:51

可否提供Jlink调试下载配置过程呢?使用keilMDK是可以下载调试stm32g0芯片的,eclipse使用JLink调试下载STM32G0失败 (stmicroelectronics.cn)

所属标签

相似技术帖

官网相关资源

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