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

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

[复制链接]
电子星辰 发布时间:2019-5-6 10:10
因为最近在学习用C++写单片机,所以拿G071来实验一下,希望诸君不吝赐教,指点我的不足和错误!+ I4 _% J3 k/ {0 k( E
压缩包一直传不上,发网盘吧。- Z2 W+ E$ K8 @
链接:https://pan.baidu.com/s/1Qlae5WM1jk87iawBomTayA
) r1 d% x5 ^5 L7 @2 D: {) E1 V提取码:0x3v " E. m; E: D# @( q9 ^+ {/ r5 V: Z
复制这段内容后打开百度网盘手机App,操作更方便哦
( n; ?6 B6 j8 H! L* J$ C
! W) ^! h' M9 a- b7 S! S一、通过CubeMX来生成HAL库的初始设置! H  n; Q) z  h$ s! J% J' I6 v6 u$ w
这一步和C没什么区别。
  O2 F! V. L; i1 I设置为板卡默认初始化,频率64M,PA5默认低电平(灭灯)。
1 m( T: M9 \( Z# C 1.JPG   L" n- @* f3 f( [; c
6 G7 a! |' m$ Y( }% w( s% k0 t
$ e5 @6 s2 c( P4 u& k4 C3 e
二、设置编译器和main文件
0 p) g$ R6 O- G4 `1、编译器Target的ARM Compiler是V6以上,则可支持C++11全部特性。1 n1 g+ u! L  f
2.JPG 3 P8 f, }/ B  D1 L9 C/ j
2、将主文件main的File Type设置为C++,既可以被C++编译器编译,又可以被Cube修改(不过每次修改后要重新设置)。
; A% D% @7 h. C! u3 ~/ a
" s. s2 d' s% ~# e 3.JPG
0 J' _# E8 k# T4 T' R  a
' u9 H& Y- ]# B8 ?三、部分代码
% u7 ^, w: ^, l3 A
  1.   while (1)# _; g' ^  S, s. ]5 M1 Z8 r9 G1 k% z
  2.   {
    $ H) {7 ]8 o- [* O7 @; j
  3.                 led.TOGGLE();
    % b3 \6 c! L7 {1 i2 R+ o: P' P
  4.                 HAL_Delay(1000);8 ~9 A, Z' a6 b7 S
  5.     /* USER CODE END WHILE */( b8 O; J& U5 r3 \3 O; U6 w
  6. " Z& \. z1 [4 B3 d" W4 U
  7.     /* USER CODE BEGIN 3 */
    ; ]; V4 U8 X2 N
  8.   }
复制代码
  1. //cpp文件
    ; l% @. \  h- K) u
  2. void LED::ON(void)
    " _) p. d9 K% |7 _6 w4 |/ I1 L
  3. {3 m5 Y: O' n& ~
  4. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_SET);    // 输出高电平
    1 s$ C: B" ?3 ~0 x9 E: k" k( X; M
  5. }$ e( x% ?) V7 ]7 s. y$ U
  6.   L& k4 ~/ ]/ Q. R, A3 W
  7. void LED::OFF(void)
    6 p8 e* X! g( A7 q8 f$ @6 g
  8. {
    ! H2 O3 }0 s6 @0 k! @8 B, k9 O3 o
  9. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_RESET);  // 输出低电平
    0 }5 V! x- A- n2 x/ B4 w6 e
  10. }
    3 O5 H  c# O$ p
  11. 3 U8 {1 A* M& Y+ |
  12. void LED::TOGGLE(void); b. I. w! X* W( ]6 c/ H: Z$ O  m
  13. {
    4 i9 [9 a) |' G
  14. HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);                // 输出反转, W$ K3 f' W& j2 Y
  15. }
    : B* J0 B/ f! }! v1 p
  16. LED led;
复制代码
  1. //h文件
    % d' A* o0 l6 T/ P" x( v5 w, w; y! E
  2. class LED
    ! i0 ?- x8 J. R0 Q4 r
  3. {
    / c+ S5 h8 t4 b2 Z. }6 I
  4.         public:7 J, I4 i4 X9 p5 |0 v
  5.                 void ON(void);; y, q3 I# x( {
  6.                 void OFF(void);  x5 x# Z5 y5 A  u6 s8 R
  7.                 void TOGGLE(void);7 Q, Q+ v7 \1 F
  8. };
    * A' y7 y3 i0 c9 J% i2 \
  9. extern LED led;class LED
    " S1 `7 N& Y, e4 [
  10. {1 A" Y1 Y6 V$ j3 J: L5 g! L0 o
  11.     public:' ?6 I% h3 T9 n1 u, P0 n
  12.         void ON(void);
    6 \0 I# y: q& i2 b! ]& T2 z
  13.         void OFF(void);
    : ^) Y  x  j0 p$ Q
  14.         void TOGGLE(void);
    4 l4 r! J+ K  t6 K
  15. };
    ) t; M; l1 G3 o0 G2 t  ?( _7 C( O0 W" z5 J
  16. extern LED led;
    8 U. o7 v3 y" M# T' c& t1 f
复制代码
# E, e! o6 i( h/ U9 r, }& ?

( X4 b; O1 \; g# K
收藏 评论5 发布时间:2019-5-6 10:10

举报

5个回答
STMCU-管管 回答时间:2019-5-7 14:16:38
谢谢分享
$ X; Z8 Y1 w1 \% m" w$ 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
% q' C+ Q, A: ^1 \  M& N: n- |8 j只是简答提下,你可以去参考下mbed,里面好多执行都是用C++封装,可以作为标准参考下。 ...

) F& ?5 b' A6 @0 p9 s' i嗯嗯,多谢了。
gxluozhi 回答时间:2019-5-24 21:16:21
谢谢分享!
瞻_ 回答时间:2019-6-22 12:40:28
学习学习,谢谢分享

所属标签

相似分享

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