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

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

[复制链接]
STMCU小助手 发布时间:2021-11-11 22:00
硬件介绍
- a7 V9 g0 J4 K, S, [  m. USTM32 NUCLEO-G071RB 开发板,软硬件资源详见官网介绍,主要是参考用户手册和电路图,利用STM32CubeMX图形化配置工具生成工程文件,并编写用户代码" k( q0 w! n! x

6 E9 T" g, z. B# l
20201222215326788.png
% x1 |7 m! J- K& S

9 X$ }5 u( _4 J. w4 F6 @1 U4 qSTM32CubeMX新建工程
' ?. x" f# ~! q5 o1 Q) t打开STM32CubeMX,安装所用MCU的工具包,再按图示步骤操作2 u9 x1 q) E: ?2 r8 E7 Z# y

$ ]! @- p6 w8 n1 d8 S5 }: g
20201222220528643.png
3 Y3 B5 c0 y8 I/ w6 B
& H- F; n  k( i
20201222220539221.png

6 `( A, _" f2 K/ {; X4 E% K
+ m; A* a- V3 ^# D# F时钟配置# ~+ g+ H& A8 n1 B9 o
STM32G0系列内嵌高精度(±1%)RC振荡时钟,无需外部时钟,且只需一对电源供电,直接将时钟树的HCLK配置为最大64MHz即可
1 }! X( a# I8 I# e, D
20201225095249146.png
" h- T% E$ J! ?, O
6 t& V6 J# F9 l! {
LED配置
$ U# f( b2 U0 T  h; D  D5 v2 W原理图
( A$ H% v: Z+ z% P通过阅读用户手册和原理图可知,LD4为用户LED并且连接到STM32G070的PA5引脚,输出高电平时,LD4被点亮。* }3 p4 S2 I: b  I. X) W

+ b3 b- [' s/ h  T
20201222220354981.png
  I8 {/ T8 J1 q: }, a' Y  }9 [# l
9 b& G3 I# K0 f& ~" I4 z
CubeMX配置
2 Z2 l! B- k6 \& x8 p+ M1 K选择GPIO,点击PA5管脚,模式为GPIO_Output,User Label输入LD4,输入User Label的好处是在main.h中会生成如下定义,方便开发
% R0 c0 z7 E% \8 j/ @+ u5 T# A
  1. #define LD4_Pin GPIO_PIN_5
    & T. F! t6 u* j
  2. #define LD4_GPIO_Port GPIOA
复制代码

" h; l2 W! a7 J4 T: \
20201222221551594.png

- D' m* S6 r3 N6 X; j( j$ e) p. _, u, t3 w' \5 P" U/ h" q
9 @- D% V1 k9 f3 G+ K9 ]4 x/ W' q
按键KEY配置' y- f0 b8 ~' i
原理图% }6 \; X: l, w' B
用户按键B1通过上拉电阻R29钳位在高电平,当按键被按下时变为低电平,因此可以使用外部中断下降沿触发来检测按键3 {/ _- s, q" a# M  z2 k, J: Y* `

0 T4 ^1 u3 P$ _8 Q0 h$ h. g; b& z
20201223092559439.png

+ X4 m: n$ ?' i  R% M! c8 O! K0 @& N2 c' E1 j
CubeMX配置) p9 a4 X# S4 U/ z) {" |
选择右侧GPIO,引脚不好找可在搜索框搜索PC13,单击选择GPIO_EXTI13,GPIO模式配置为下降沿触发,最后使能外部中断0 _3 t; {4 X6 t' _+ F

( s" |1 j! b% F6 t+ l, J! n: B
20201223092945435.png
- e5 r" l* f* Z" T% W
( g  x# S$ y; n; V
20201223093339683.png

: X3 S0 I! k3 h1 X
1 Y+ ^3 A5 _6 A# T: z生成工程& a2 A5 R9 Y* `. E4 ~$ i1 X3 b. [
进入Project Manager,点击右侧Project输入工程名,选择开发环境MDK ARM V5(即Keil 5)9 l1 s$ T% c. i" T
/ m" W0 G  {1 Q/ E& o  L
20201223093534190.png
( R' Y: v! d  c$ z, N

% S$ Y6 C; S" x6 E" Z进入Code Generator,勾选为外设配置生成单独的.c/.h文件,最后点击右上角的生成代码即可" h( C0 V1 z# o7 F8 d9 R

; y* Y- @" [. t" G: B$ c
2020122309393591.png
1 u& `9 z$ _. ?5 X
6 W& V6 r9 A# E: r- i' A
添加用户代码
% d+ ?2 M( o& w- g7 [' ?  w打开工程,在main.c中的/* USER CODE BEGIN 4 */之后输入以下代码
* t$ c6 O/ p, x# b1 |( U" ?  d6 G' u" x5 X# d/ M7 f/ l
  1. /* USER CODE BEGIN 4 */8 H5 w+ z+ _$ @
  2. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
    ( F  {/ R- _" x
  3. {8 T- {' p) D1 V
  4.     /* PC13为按键,按下时检测到低电平触发 */
    ! z) b  c1 r* S5 D
  5.         if(GPIO_Pin == GPIO_PIN_13)
    2 V0 M* f  ]6 E. ]: f0 o1 V% ]3 g+ m& |
  6.         {( y8 g& F; ^, E; h* S" j
  7.             /* 翻转LD4的电平,实现按键控制LED亮灭 */1 P0 y6 V- N$ n# B2 w0 J, [3 Z6 O
  8.                 HAL_GPIO_TogglePin(LD4_GPIO_Port,LD4_Pin);* n# P0 }9 Q4 f  b- K8 g4 h
  9.         }4 ^! b# u7 P0 d
  10. }
    ) P! P! T+ x% i& V$ Q7 n* ~. \
  11. /* USER CODE END 4 */
复制代码

. M& R4 W. k( P$ i  ^) b实验现象. F: R- l( _4 B% B
编译、运行、下载后,现象如图
+ t8 Q2 H9 ~& A) v3 \) ~0 P% H5 Y. P3 N9 [: l9 u
20201223100221426.gif
0 k* _- Q5 d# X1 d% D8 I& l

2 l& J' X# S0 T5 Z5 {$ l
收藏 评论0 发布时间:2021-11-11 22:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版