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

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

[复制链接]
电子星辰 发布时间:2019-5-6 10:10
因为最近在学习用C++写单片机,所以拿G071来实验一下,希望诸君不吝赐教,指点我的不足和错误!- u. L7 C% n% d% S+ c
压缩包一直传不上,发网盘吧。$ \9 N' s1 @2 j2 G% C* U* h  w
链接:https://pan.baidu.com/s/1Qlae5WM1jk87iawBomTayA
1 T, U# j0 ?4 L提取码:0x3v 5 Q9 Y. F; a% Q4 }/ t( b8 W
复制这段内容后打开百度网盘手机App,操作更方便哦7 f9 Z# F0 I% i4 u6 D
3 b. ?1 C$ e* M5 Y% A
一、通过CubeMX来生成HAL库的初始设置
& t2 A& V5 D1 [# ?这一步和C没什么区别。
/ S2 Q6 |9 n0 W  `# d1 Z% N设置为板卡默认初始化,频率64M,PA5默认低电平(灭灯)。, z7 Z% ~( g' V) ^7 E- k
1.JPG & ^$ C) A( E, s$ Z" }
: i: ~4 K8 r* \8 o" \! h$ ~

3 r5 f( l( g* m6 {/ N二、设置编译器和main文件% H2 V2 a+ D. E
1、编译器Target的ARM Compiler是V6以上,则可支持C++11全部特性。
9 I1 W, h$ w( n! `2 s( P 2.JPG 6 n! n* ~' s: o4 f) g: v
2、将主文件main的File Type设置为C++,既可以被C++编译器编译,又可以被Cube修改(不过每次修改后要重新设置)。
- q7 S- ~- n* R. C$ ?) E
  y8 N- v$ F+ `- q% }8 ]. m* } 3.JPG / e$ i% {0 p3 q0 M. {8 _

8 J! d! a4 |* V! |+ |+ }4 @: o三、部分代码
: w$ b' L5 ~* f6 r
  1.   while (1)  z+ g, |7 A# }: D- Y
  2.   {- r/ x& ]6 e5 q! _+ r5 b4 J
  3.                 led.TOGGLE();
    3 a. ?6 A- i% H5 W$ C4 i
  4.                 HAL_Delay(1000);
    1 x- w" q/ S; D2 I+ P/ _
  5.     /* USER CODE END WHILE */
    , ]0 \' f$ r5 d/ f+ o

  6. ; V( q6 G# m' F( f+ k1 I
  7.     /* USER CODE BEGIN 3 */# _# Z$ q3 z6 m( H5 ]! D2 i
  8.   }
复制代码
  1. //cpp文件
    % Z3 ~, a3 A& ~7 R9 {) z3 D
  2. void LED::ON(void)
    $ A, j$ K$ x+ @% s* Q
  3. {) Y& m$ L) C4 M7 W# b, x
  4. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_SET);    // 输出高电平
    7 M5 H3 n/ h8 a. f' a4 I9 @2 L
  5. }7 ^$ Q+ g) V% U- X% U: b0 P1 ?

  6. ) r- h$ e# \$ t& _8 q( F2 t
  7. void LED::OFF(void)
    8 E  W. s) R; K4 C7 o/ T+ r# B
  8. {
    % k' T. j; u& O6 _  ?+ U
  9. HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_RESET);  // 输出低电平
    . g/ c- \1 S1 T2 t: G. X% _/ q# J; }
  10. }5 w  |& p' w6 Y

  11. # z1 H/ P' U7 T  W! u
  12. void LED::TOGGLE(void)( Q! s3 L$ Y" e( l  K
  13. {
      h& Q- C) K2 T; G0 f
  14. HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);                // 输出反转
    , A. l& c5 p: t4 L& k) m6 d% v
  15. }
    6 e% K8 a- `) G; F# V/ n
  16. LED led;
复制代码
  1. //h文件
    3 [; @0 k+ X) k" i: s0 b- F
  2. class LED
    $ y: S1 g* t6 a: U0 H, X' b' k
  3. {
    4 o- E0 T+ s- T4 O6 A
  4.         public:
    " h' x. ~+ |* F
  5.                 void ON(void);
    ; ^; C3 L4 K0 j$ Z( l
  6.                 void OFF(void);1 E# Y2 |2 i3 j$ Y: }9 r
  7.                 void TOGGLE(void);. e$ x' Q. A/ f& [
  8. };
    7 S8 z: U/ f  A) J
  9. extern LED led;class LED3 d# _2 t8 i- d% j& G3 {( a
  10. {
    & ~/ b7 `/ a  R- t' q" Q, z
  11.     public:' O# g5 N  L" b0 S2 d2 [" a/ O+ x
  12.         void ON(void);
    ! n8 l4 ~* v5 K1 d! A
  13.         void OFF(void);
    & N% W: p" `7 s& Q1 w
  14.         void TOGGLE(void);4 c' k0 L6 N. }* n, z' L% s
  15. };' A4 i/ S6 H5 C
  16. extern LED led;
    $ i+ P8 y) @% @+ Z
复制代码
  y7 s1 ], l3 w# p) c, T

/ y7 [! Y+ N. x3 G
收藏 评论5 发布时间:2019-5-6 10:10

举报

5个回答
STMCU-管管 回答时间:2019-5-7 14:16:38
谢谢分享
9 c/ v; w$ W3 w7 V9 a
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
" c8 y  z- Q$ J. [只是简答提下,你可以去参考下mbed,里面好多执行都是用C++封装,可以作为标准参考下。 ...
4 q* d* i. O" j9 J- C
嗯嗯,多谢了。
gxluozhi 回答时间:2019-5-24 21:16:21
谢谢分享!
瞻_ 回答时间:2019-6-22 12:40:28
学习学习,谢谢分享

所属标签

相似分享

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