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

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

[复制链接]
电子星辰 发布时间:2019-5-6 10:10
因为最近在学习用C++写单片机,所以拿G071来实验一下,希望诸君不吝赐教,指点我的不足和错误!
$ j( O0 D% {+ Y5 {+ t$ A1 E压缩包一直传不上,发网盘吧。
' k3 t+ q2 S( k* W% G3 z) Y链接:https://pan.baidu.com/s/1Qlae5WM1jk87iawBomTayA . P, [. ^+ q) z  y# u- A) n$ Z
提取码:0x3v
- y; R$ r% Z% Y复制这段内容后打开百度网盘手机App,操作更方便哦$ P1 U$ r" `3 f1 X7 o3 U2 d( |
3 x! [) Y% ^8 b, d/ {( O, s# X
一、通过CubeMX来生成HAL库的初始设置
9 A& S0 L% ~+ l- G1 x' a. T这一步和C没什么区别。$ }% b' ^5 q+ W3 \" S
设置为板卡默认初始化,频率64M,PA5默认低电平(灭灯)。
$ Y2 g/ i, q2 x4 P0 a) a6 m 1.JPG 8 C, I. Y' |  ^8 c% k

. n% x% ]) R5 ~. i- q3 o# a: D
# G, u+ D' \% d4 G' O/ v% p二、设置编译器和main文件. a; c* O& M& q3 V6 l
1、编译器Target的ARM Compiler是V6以上,则可支持C++11全部特性。  ^, [' Q) p9 m* g
2.JPG & f! o6 F5 B* q) A5 s8 M, S
2、将主文件main的File Type设置为C++,既可以被C++编译器编译,又可以被Cube修改(不过每次修改后要重新设置)。
  C2 w1 Z5 ]8 Q( F, I  f0 c8 p9 w/ m
5 ?( u" q2 G0 \% g; N+ U" ^ 3.JPG
) Y/ k+ l$ d5 b1 w5 S$ I7 ^) x* `$ `/ P
三、部分代码
: u; W$ E# E3 b% t
  1.   while (1)) q+ L: \, _9 p3 u
  2.   {
    ' V( L/ j+ ?$ J
  3.                 led.TOGGLE();
    3 C7 _- S" z4 n, z/ D/ s# _1 ^" q
  4.                 HAL_Delay(1000);# F( @7 _+ c" T3 O1 H
  5.     /* USER CODE END WHILE */
    . E9 k/ N! n! j; c) r# p7 i8 `: P5 @
  6. 0 U9 [5 q1 k. K
  7.     /* USER CODE BEGIN 3 */; d& S% ^3 u/ l" X% p# \! u$ W
  8.   }
复制代码
  1. //cpp文件5 x+ c: u& g5 q
  2. void LED::ON(void)
    - R: X0 h3 b9 O/ \
  3. {
      F3 h: K! |# z7 A! b+ c0 i1 W. T
  4. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_SET);    // 输出高电平* N% C+ L( P! ?
  5. }
    + u* }' z. h6 v8 L4 n, ]& B

  6. / g, z8 K$ C0 D  h( A  r
  7. void LED::OFF(void)  N& |5 r* |1 }5 n' ]
  8. {& |( S5 ~! l# b, N4 Y: J+ i, c: S
  9. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_RESET);  // 输出低电平
    - A1 ], R5 f8 I0 v
  10. }8 K5 g7 ~  n- s' U  ~- t

  11. # f& ~- a* \7 o: m" ~) _
  12. void LED::TOGGLE(void)
    + x2 C5 u/ \5 a# t7 X  v, T5 a
  13. {" a  d+ t2 }! R: i' X
  14. HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);                // 输出反转' R, N1 n1 Q/ c& x  b4 w: v2 v
  15. }
    # w, _  O: y! J2 s. E
  16. LED led;
复制代码
  1. //h文件& \+ j" p) `2 B0 a+ K
  2. class LED
    ! H0 z0 Y# o& M* O: H6 i5 Q
  3. {$ N; _2 I, P* v
  4.         public:
    4 J) _5 j% K8 m, U; \
  5.                 void ON(void);7 [% `" J$ I1 ~& M8 [3 h
  6.                 void OFF(void);
    1 O6 J9 [0 p& W0 v
  7.                 void TOGGLE(void);
    $ J. E( w, q: Z8 ^$ N
  8. };
    2 d# r9 e9 ~" h, J1 X
  9. extern LED led;class LED! D& I, j  |! U/ {3 ?
  10. {
    6 D0 M6 y' t9 `: m( s" T, f  o
  11.     public:
    1 h- q7 J* e8 l7 u  x
  12.         void ON(void);$ |, G3 j; _/ H9 L# J  l, J
  13.         void OFF(void);+ l  Y8 Q1 p+ D4 y9 l7 N
  14.         void TOGGLE(void);
    6 Q! g! T. C+ C4 e
  15. };
      z3 ]( n9 K) X$ c+ D3 y6 K4 N7 i- p
  16. extern LED led;9 g+ j. f' V' v$ _' j# x8 ^- Z: w& ~
复制代码

7 V& W) J/ |4 C2 S2 J1 _
1 G! H6 V5 K5 m" ]" E
赞 收藏 评论5 发布时间:2019-5-6 10:10

举报

5个回答
STMCU-管管 回答时间:2019-5-7 14:16:38
谢谢分享6 J2 i. H- W9 F; w/ c+ ?. x8 Q
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$ a9 U2 @& X  b) X& k0 v* }
只是简答提下,你可以去参考下mbed,里面好多执行都是用C++封装,可以作为标准参考下。 ...

7 `6 X4 _% u3 R0 V嗯嗯,多谢了。
gxluozhi 回答时间:2019-5-24 21:16:21
谢谢分享!
瞻_ 回答时间:2019-6-22 12:40:28
学习学习,谢谢分享
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版