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

HAL库/C++混合编译 NUCLEO-G071RB点灯

[复制链接]
电子星辰 发布时间:2019-5-6 10:10
因为最近在学习用C++写单片机,所以拿G071来实验一下,希望诸君不吝赐教,指点我的不足和错误!: W; W5 Y5 c# N6 o
压缩包一直传不上,发网盘吧。
9 ^- @1 @( r, p% ?$ ^, ]: j" T6 w链接:https://pan.baidu.com/s/1Qlae5WM1jk87iawBomTayA
. f$ m1 ^! T( l提取码:0x3v
8 m- v7 N" z9 E" |  z复制这段内容后打开百度网盘手机App,操作更方便哦9 O6 I. l) b  C  M4 [# W  N
! q, B/ q: K6 E+ }
一、通过CubeMX来生成HAL库的初始设置7 k; L: ?4 F* G
这一步和C没什么区别。& m( v$ Z$ l7 I0 Y) j
设置为板卡默认初始化,频率64M,PA5默认低电平(灭灯)。
' R8 x! R& L! l) L+ g# M8 w6 H 1.JPG
/ {* w  O9 i# A2 |2 }; q' e1 R. f# j' d+ N9 \2 o

  z; f; ]( O1 N7 L6 p1 o二、设置编译器和main文件
/ Y3 o+ q/ O, X8 a1、编译器Target的ARM Compiler是V6以上,则可支持C++11全部特性。; e0 s' }; Z. z4 C7 D
2.JPG ) w9 V8 V! b- ]  P; E# a
2、将主文件main的File Type设置为C++,既可以被C++编译器编译,又可以被Cube修改(不过每次修改后要重新设置)。! D% X* E0 `; _% d( {- p
  e- }6 b! S4 A6 c
3.JPG
4 U/ f8 v4 F6 e  g
- B0 y0 P# D. I+ _# H三、部分代码* p) ~$ O0 l# h' j8 M
  1.   while (1)' {7 d  g+ f6 c1 W3 E( L
  2.   {7 o  q* P# g9 {6 y
  3.                 led.TOGGLE();
    ' |+ Y) G' K  @# R3 z9 l
  4.                 HAL_Delay(1000);' H# {# |3 K3 }. m
  5.     /* USER CODE END WHILE */
    4 e8 L4 G( U4 K4 w! ~, G

  6. ) M  ~( ^8 v/ h7 Y6 C
  7.     /* USER CODE BEGIN 3 */3 _& G0 j8 x% u/ a) ^7 s
  8.   }
复制代码
  1. //cpp文件
    & {3 _- Y# J6 v! `4 s+ |8 W' y! t
  2. void LED::ON(void)
    6 _! s2 |. u# J4 T! a) u7 t7 v
  3. {) [4 ~* P1 ?9 u1 ^! U
  4. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_SET);    // 输出高电平
    0 @+ N' v6 u* J6 X
  5. }
    " m; y* o: l( h* P% ^9 R% [

  6. * l3 K8 ]) a' K8 q3 E
  7. void LED::OFF(void)( X* C; W' J8 a2 C* x- V" L
  8. {+ e( Z7 c: l! N+ d2 k: B" ]; u
  9. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_RESET);  // 输出低电平; e3 G- I3 Q  `) b% H8 I/ N. K7 a
  10. }
    9 S- L5 ]; j! Y, S( A

  11. - \& C+ s, [0 T" R4 _5 ~( F
  12. void LED::TOGGLE(void)- T4 c, q  y4 E- [: B
  13. {( w5 H1 j, }' M8 J" i
  14. HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);                // 输出反转
    " b' G% ~$ b' i% ?/ {
  15. }
    ( M% e, W7 O  h8 @# o
  16. LED led;
复制代码
  1. //h文件* z8 B7 K  x5 d  y
  2. class LED; O* Z- T/ i/ U2 E5 c
  3. {7 }8 e' d+ w5 }. M
  4.         public:
    # P* O( o# e9 O8 V6 E+ y
  5.                 void ON(void);
      y: m0 W5 _1 a( I4 @; a% @5 k
  6.                 void OFF(void);' }* q+ d& O6 l
  7.                 void TOGGLE(void);
    9 l" O) `. M6 @+ O1 w! s
  8. };6 N  {" D, r! B. v5 c9 z
  9. extern LED led;class LED
    ! [& c7 L0 a8 X$ q3 `1 p
  10. {
    * d  Z8 d$ Q! k9 V; s  J! `
  11.     public:
    6 W! m% C8 `1 d9 e2 E
  12.         void ON(void);' s: s' e- P+ E
  13.         void OFF(void);* U3 ?: M- r: \! Y) Z1 R
  14.         void TOGGLE(void);3 X. _# J) I/ E7 r" ?
  15. };8 z: n, w6 u! x2 _) v. A: t$ ?
  16. extern LED led;: a, _/ r2 O3 k
复制代码
) t7 s+ X. n% @% F0 F

( i% h* H6 t! m8 i5 W
收藏 评论5 发布时间:2019-5-6 10:10

举报

5个回答
STMCU-管管 回答时间:2019-5-7 14:16:38
谢谢分享
2 T4 k$ \# b- M& M
King_Nick 回答时间:2019-5-9 10:54:37
只是简答提下,你可以去参考下mbed,里面好多执行都是用C++封装,可以作为标准参考下。

评分

参与人数 1ST金币 +1 收起 理由
电子星辰 + 1 赞一个!

查看全部评分

电子星辰 回答时间:2019-5-9 11:27:31
King_Nick 发表于 2019-5-9 10:54
$ h5 f& w5 S$ h只是简答提下,你可以去参考下mbed,里面好多执行都是用C++封装,可以作为标准参考下。 ...

% X3 J4 f1 Z  U$ I' ?# X+ P0 @! O0 I3 {嗯嗯,多谢了。
gxluozhi 回答时间:2019-5-24 21:16:21
谢谢分享!
瞻_ 回答时间:2019-6-22 12:40:28
学习学习,谢谢分享

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版