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

【经验分享】【STM32G0】按键控制LED亮灭

[复制链接]
STMCU小助手 发布时间:2021-11-11 22:00
硬件介绍: F- O- G& [- d8 s  W1 N+ C* w, f
STM32 NUCLEO-G071RB 开发板,软硬件资源详见官网介绍,主要是参考用户手册和电路图,利用STM32CubeMX图形化配置工具生成工程文件,并编写用户代码
* o, U* @# @9 u2 M9 H4 k5 ?$ d
. I: a+ u; J" V
20201222215326788.png
; F0 Y, }) u' D

1 |$ T/ j, A0 mSTM32CubeMX新建工程% [: a6 @1 B0 d0 Z
打开STM32CubeMX,安装所用MCU的工具包,再按图示步骤操作
& ?' @2 \" t- g6 k& y& [* ~/ ~/ j$ l  ~( C5 J" a8 E; Y
20201222220528643.png
$ j' G8 U1 U. B( f- {/ L8 O! |

' p5 \. S: Y+ x
20201222220539221.png
! d2 `' i) G$ I* O& x0 k8 R
7 e! H% A, b! d) W
时钟配置
: I6 t9 t+ O' K, @' {4 c! c9 mSTM32G0系列内嵌高精度(±1%)RC振荡时钟,无需外部时钟,且只需一对电源供电,直接将时钟树的HCLK配置为最大64MHz即可
! @$ @0 R2 O6 u4 f
20201225095249146.png

, ]3 e$ X* n* b+ m" [
; ^1 _1 d: W5 d" XLED配置
3 q) W( j: K8 ^" I+ E7 I原理图
" d! t. C5 j  O: R1 j; ]( ^. ?通过阅读用户手册和原理图可知,LD4为用户LED并且连接到STM32G070的PA5引脚,输出高电平时,LD4被点亮。
# p& F$ j$ [3 u9 l, O! }( A2 [# O. d* Z8 C
20201222220354981.png
6 O2 R+ e6 y& i% _. R

! w9 |  w$ y  r' hCubeMX配置- H+ ]) n% S, i& H- T. `# p
选择GPIO,点击PA5管脚,模式为GPIO_Output,User Label输入LD4,输入User Label的好处是在main.h中会生成如下定义,方便开发6 G3 X% x; ?- |1 p1 s5 M
  1. #define LD4_Pin GPIO_PIN_5  R5 E2 _) o% O7 I# ^% _
  2. #define LD4_GPIO_Port GPIOA
复制代码

+ N9 b( S& Z9 h# @7 A' U% F/ T
20201222221551594.png

3 |/ y, T( M# T
- m+ `; X* I  O  d  L8 P$ P
* K% \8 v+ i/ s" c2 N/ i6 C按键KEY配置$ ]) `$ \: q+ ?" i/ J3 z
原理图
6 M/ Q' [: |. Z* ]% i: G1 r用户按键B1通过上拉电阻R29钳位在高电平,当按键被按下时变为低电平,因此可以使用外部中断下降沿触发来检测按键4 y) |( U5 \# c# R7 R+ O' [

, k3 W2 t1 f+ N8 }
20201223092559439.png
" j0 E# c4 i. }/ c0 @  S, s# @% W
0 U# c& e- ]8 k: V7 W
CubeMX配置7 H- k6 i; u, L0 P3 D# d- k
选择右侧GPIO,引脚不好找可在搜索框搜索PC13,单击选择GPIO_EXTI13,GPIO模式配置为下降沿触发,最后使能外部中断; }% D0 w8 X6 M

6 y/ E. z. m) C2 \/ r" L$ D
20201223092945435.png

7 ~/ n4 m5 Y: ]9 L2 e, D" y" L0 J- v) n( Y$ y) K
20201223093339683.png
0 `" t0 S2 U+ Y/ E

: y, U/ H' F) A4 R& L. [生成工程" @$ d. `0 f+ m! A) N$ O* n
进入Project Manager,点击右侧Project输入工程名,选择开发环境MDK ARM V5(即Keil 5)
, V" g% l% {: X" R1 D# n8 j! ^: Y5 y9 F" A' q; _1 q5 C
20201223093534190.png
3 v% j7 E9 J& i

! P+ C$ V# D9 G& w( e进入Code Generator,勾选为外设配置生成单独的.c/.h文件,最后点击右上角的生成代码即可0 }! J, Z2 K" M
  k& M4 Z0 y2 d/ n+ L7 m/ S
2020122309393591.png

& M+ E' H, ~$ w. W
( x/ F6 V% k/ H# }( `添加用户代码
. R8 m7 ]& B: p. v打开工程,在main.c中的/* USER CODE BEGIN 4 */之后输入以下代码' E$ h# {- c9 n1 M3 d6 A* ?6 \

* [2 W. o  b8 h& E6 z4 G, C* Q% u
  1. /* USER CODE BEGIN 4 *// Y$ n0 n* Q6 B6 i
  2. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
    - D& Z9 }/ m: n% w3 i, b4 j
  3. {% V- a6 t' j& m: p
  4.     /* PC13为按键,按下时检测到低电平触发 */, ]) z% Z9 q5 A7 k! ]2 k
  5.         if(GPIO_Pin == GPIO_PIN_13)
    8 {% W5 C/ X5 Y7 |* l
  6.         {1 C/ G0 x, Y) p, }( u8 {4 F, R
  7.             /* 翻转LD4的电平,实现按键控制LED亮灭 */' d. B6 I. w; v; z) Y
  8.                 HAL_GPIO_TogglePin(LD4_GPIO_Port,LD4_Pin);+ b% S+ V" G8 T  ^5 I1 _8 L$ Z9 k
  9.         }5 w1 s. n7 d! |2 @9 H6 H: O
  10. }
    3 s7 j+ E1 E! {/ e5 Y5 w8 a
  11. /* USER CODE END 4 */
复制代码
3 P+ z* C- H/ C+ h+ D# I. P- z/ R) F7 C
实验现象
, g$ W# b8 R8 U  s3 V7 W0 i: u" d编译、运行、下载后,现象如图
9 P  n9 c/ p. K  Q; J! w3 ^5 X7 L( c
& Z/ j5 l% X1 k& Q$ q! U$ d
20201223100221426.gif
8 `. @! V9 k0 p
; Y. F6 ~1 c# Y( _. y: q
收藏 评论0 发布时间:2021-11-11 22:00

举报

0个回答

所属标签

相似分享

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