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

STM32G0按键控制LED亮灭

[复制链接]
STMCU小助手 发布时间:2022-10-25 22:54
硬件介绍9 Z3 B1 E/ N- H: U  t* v# J
STM32 NUCLEO-G071RB 开发板,软硬件资源详见官网介绍,主要是参考用户手册和电路图,利用STM32CubeMX图形化配置工具生成工程文件,并编写用户代码
" t( N0 |3 m/ y1 S
* U# `, F: I" p- \  a 20201222215326788.png
) I4 P) ]& w- q6 x8 U  f
. x0 E$ @: L+ l& Y! p5 d  nSTM32CubeMX新建工程: f9 ^- Y4 Z7 c
打开STM32CubeMX,安装所用MCU的工具包,再按图示步骤操作
7 w1 R4 f* W" [1 D* g
# ~% K/ n5 B% F. s3 G* _7 u6 ] 20201222220528643.png / ~4 ^+ W5 p( K, c9 N2 P
20201222220539221.png ' ~2 L1 i$ F/ r) m
4 L# Q4 L1 h6 ?. G1 z

5 d! ?2 m9 m) S- x: C% |- K; {时钟配置

1 k/ S# c  {9 _& l/ U* \STM32G0系列内嵌高精度(±1%)RC振荡时钟,无需外部时钟,且只需一对电源供电,直接将时钟树的HCLK配置为最大64MHz即可9 ^* P  Z8 P8 a* o# |# s
6 M" ^& W& F5 H. O8 U/ G
20201225095249146.png , O5 c/ h# A! m9 d0 q" E8 m8 Y

* r  f& \! }, A  \- K# f0 o# J# sLED配置7 Q+ c6 X4 D8 h" T' l
原理图

' v6 {# l+ o% g7 L. M通过阅读用户手册和原理图可知,LD4为用户LED并且连接到STM32G070的PA5引脚,输出高电平时,LD4被点亮。) n2 \6 ?* H4 Y$ F7 |

& f& X6 }# V+ t: X 20201222220354981.png . o5 R/ ]9 v4 }
& Q( ^9 v& |$ x- j7 s' H( S% Y
CubeMX配置
) Z; w9 m4 Y8 I$ k+ M选择GPIO,点击PA5管脚,模式为GPIO_Output,User Label输入LD4,输入User Label的好处是在main.h中会生成如下定义,方便开发
" L. Q4 u4 Z* `" p6 {5 m2 y$ |1 ~! I$ ?: V3 k# |" S
  1. #define LD4_Pin GPIO_PIN_5. W4 {5 Q; J+ }: ]) i, A) G
  2. #define LD4_GPIO_Port GPIOA
复制代码
' W6 m0 a4 f0 D" {! _; S9 k3 w
20201222221551594.png
/ E9 }# K! W9 |& \: i: W; S; ^
" v6 L7 K/ A& `" i: r$ R4 u; l按键KEY配置
% K* j' ]* d$ r; T* i: s原理图
  m8 l# b' t# ~& e% |, ]( q1 X0 S
用户按键B1通过上拉电阻R29钳位在高电平,当按键被按下时变为低电平,因此可以使用外部中断下降沿触发来检测按键
5 i- E8 a- ^5 |; L
4 L, ]. t, R1 O) M0 f& B
! L% k5 G( f! d( X; S- O2 F# {2 w3 V' j& Y! F
20201223092559439.png 7 M2 J  P' J4 l8 i$ B1 t: @% R
) E$ A. E$ K, p9 |6 S
9 ?- V, d5 }% \4 o7 ]5 X$ o( O
CubeMX配置
  D- |6 K. A) S- x  S% \5 I! g选择右侧GPIO,引脚不好找可在搜索框搜索PC13,单击选择GPIO_EXTI13,GPIO模式配置为下降沿触发,最后使能外部中断+ J5 `( K* l7 E8 R' G

5 G8 z; D% @3 L3 F  }9 K/ m7 } 20201223092945435.png
0 K2 R! @. M- F6 A. Y# ^. U- x( ?8 Y- n& y
20201223093339683.png
) a: Z% J. u& Y, }  w5 f3 _! K% w# _8 F7 m4 V7 v' v% \0 l" w
生成工程* I1 T2 Z# b5 N4 d6 F/ f' N
进入Project Manager,点击右侧Project输入工程名,选择开发环境MDK ARM V5(即Keil 5)6 ?. N6 X2 ^2 `4 h  [- X
7 @  H/ V3 `3 ~/ g, U: O1 g# ~- X) C
20201223093534190.png 7 I) ^. O7 \6 l
5 }- r, A: h9 h" M3 }2 W) \9 A3 m" w
进入Code Generator,勾选为外设配置生成单独的.c/.h文件,最后点击右上角的生成代码即可7 ?4 c- ~9 T4 V/ j% g' C

4 U4 w: Z! D! y, C, u% u 2020122309393591.png
7 A0 v" a2 H- c" C) O7 X  a- n# [" |1 g9 Q
添加用户代码
4 l9 n( ?6 P6 }  z& j6 t打开工程,在main.c中的/* USER CODE BEGIN 4 */之后输入以下代码( U3 v3 m: p/ Z" B! q1 \2 i' `

3 Y9 G+ X& w# t7 C( H( j5 E- E" B
  1. /* USER CODE BEGIN 4 */
    ( x* ?7 K5 z% g# V
  2. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin) 9 K# q' k! }3 H" w( h9 S6 j& e
  3. {6 e* j. g0 u, N, ?  v  P; \8 X0 D$ |
  4.     /* PC13为按键,按下时检测到低电平触发 */
    . G3 Y$ U; z3 t* t2 W' i- @# l( r
  5.         if(GPIO_Pin == GPIO_PIN_13)
    ) o. x+ B  G9 R1 S. Z5 q+ }! [3 U
  6.         {! c6 B' r, ~0 |, R6 q9 \
  7.             /* 翻转LD4的电平,实现按键控制LED亮灭 */* G! n- g! x/ [- E9 k& R; }
  8.                 HAL_GPIO_TogglePin(LD4_GPIO_Port,LD4_Pin);
    : E; H) Z* M( D( o3 o" R
  9.         }9 r% ?( f7 u1 O3 }
  10. }9 D/ A6 t. ?2 \9 L# F+ i5 H: w% C
  11. /* USER CODE END 4 */
复制代码
5 f) j5 z! _) T# {
实验现象1 m6 ]) s4 H6 C2 p' a1 Z7 H% U' \
编译、运行、下载后,现象如图
4 {# d& }. A6 I' S$ [
9 k5 }0 @8 L, y5 m 20201223100221426.gif
$ `+ i& R+ R8 u7 t, S  l% Q3 d6 \* R
3 @/ {) V! M# |8 Z% l————————————————  A+ k% R* ~( c3 n
版权声明:周云川0 U7 q7 y3 N% V% {0 [" z( e
6 U3 R. }% d5 D' Y: |

! R  m$ H! K9 e0 b1 |8 c$ E/ ?
赞 收藏 评论0 发布时间:2022-10-25 22:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版