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

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

[复制链接]
STMCU小助手 发布时间:2021-11-11 22:00
硬件介绍
# l0 p1 e3 Q, B, F  ~: zSTM32 NUCLEO-G071RB 开发板,软硬件资源详见官网介绍,主要是参考用户手册和电路图,利用STM32CubeMX图形化配置工具生成工程文件,并编写用户代码! O/ E4 f: \! S/ K9 p
. e1 G' t+ X4 }; f9 B$ C2 }
20201222215326788.png
3 m- `! C# |% G$ ?: W6 l

! h/ r9 G: I% mSTM32CubeMX新建工程
( x' R0 C4 O! q& N打开STM32CubeMX,安装所用MCU的工具包,再按图示步骤操作
% q/ K+ M( t$ }5 `9 [# X
7 s; t6 \8 s% ~
20201222220528643.png

  Q- A, C6 `! t! X( F1 a2 a2 F( T* a7 f0 k" o: [
20201222220539221.png
' E! b( Z4 D, j* t

. A2 W  h" P# F% [* g' r时钟配置
3 a' q6 c4 x& P: F! c; rSTM32G0系列内嵌高精度(±1%)RC振荡时钟,无需外部时钟,且只需一对电源供电,直接将时钟树的HCLK配置为最大64MHz即可) ~( }- V( ?1 C- O
20201225095249146.png

, ~" d, C9 F0 g2 a. e4 D) S1 S
LED配置
4 W* n( o$ U$ M/ Q% Y( T/ @原理图
; k+ O! G$ q' s6 }, x$ V- }* e通过阅读用户手册和原理图可知,LD4为用户LED并且连接到STM32G070的PA5引脚,输出高电平时,LD4被点亮。- @' S) f  Q& ~* p) P

/ u/ O4 {3 ]- B; j$ S+ t
20201222220354981.png

# D* n* }9 ^1 N+ `+ [- S2 ^% q8 c' t- l" G
CubeMX配置
+ ^. r$ l' t, b  ?9 ^/ ]* Y! U3 B+ r选择GPIO,点击PA5管脚,模式为GPIO_Output,User Label输入LD4,输入User Label的好处是在main.h中会生成如下定义,方便开发: L# Y5 G" l  v0 K
  1. #define LD4_Pin GPIO_PIN_5
    # ^  R7 m9 x1 f+ K: D2 J
  2. #define LD4_GPIO_Port GPIOA
复制代码

) q- A' y+ Z! ~( W, |% E
20201222221551594.png
% @' Q1 V! |' A; L/ L9 Y) C
6 ?4 N. V- v9 w3 J& L
: k0 _$ G$ a; o# ~
按键KEY配置
2 m; Q( X8 r9 W: `9 N' M9 v$ z8 Q原理图
3 e3 y# D9 `  m* t$ Y用户按键B1通过上拉电阻R29钳位在高电平,当按键被按下时变为低电平,因此可以使用外部中断下降沿触发来检测按键
+ q! g- I4 \( I& W$ e
" O  O6 B$ ~# |% O1 O
20201223092559439.png

) }) ?9 S$ V, B, `9 S- ]$ Q9 ^
- }/ f( F1 e8 ?/ t% q: X) @CubeMX配置
: z: G! U4 T- i* J选择右侧GPIO,引脚不好找可在搜索框搜索PC13,单击选择GPIO_EXTI13,GPIO模式配置为下降沿触发,最后使能外部中断: S& t# k0 a& i! {  k# F% w: w

( f. w  a! c! Q; [
20201223092945435.png

' {8 E* m5 C" ^3 T+ y& k; Y5 A# f$ e
20201223093339683.png

4 u* P' |9 w. v9 X0 \: r+ X9 M0 U) S4 d. L2 X
生成工程
$ Y4 g  Y" {: F5 M2 |+ P进入Project Manager,点击右侧Project输入工程名,选择开发环境MDK ARM V5(即Keil 5)
) T  E  @: w* Y* D5 Y( w. u8 ^  T2 s" {
20201223093534190.png

7 r1 Z7 o& F% C0 a
9 |3 ?) D( ^3 N" w8 E0 ?- n, M进入Code Generator,勾选为外设配置生成单独的.c/.h文件,最后点击右上角的生成代码即可- ~1 B2 W( a# S5 G* k
6 E' V7 f' K: @! [2 G( i" }
2020122309393591.png
0 X4 `% p8 R) ^8 S2 a, C: ?! p

) S9 v1 I& {6 _+ O添加用户代码
# A1 S- P6 A# \打开工程,在main.c中的/* USER CODE BEGIN 4 */之后输入以下代码% L( C6 s2 k8 e
8 @/ d2 K9 b# R& D$ e
  1. /* USER CODE BEGIN 4 */
    " q, [% z( w0 M) z2 n1 R, x
  2. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin) ' j; E8 G! r5 C+ N" p  L- G: L
  3. {, S) P  y8 C! z/ @
  4.     /* PC13为按键,按下时检测到低电平触发 */
    3 D3 t, L. s6 p' }
  5.         if(GPIO_Pin == GPIO_PIN_13) ( w7 J* J3 E, f. w2 Q
  6.         {, B  \; y$ X& k! B0 g6 b
  7.             /* 翻转LD4的电平,实现按键控制LED亮灭 */- \* p7 S  ~: J% f6 O9 ~1 r
  8.                 HAL_GPIO_TogglePin(LD4_GPIO_Port,LD4_Pin);
    ( l# @& Z( ^9 `+ v" X7 D- N) [
  9.         }
    0 b  B, {. |1 U* e
  10. }
    2 T0 }5 k3 F0 A0 Z
  11. /* USER CODE END 4 */
复制代码
$ Y- P7 D! j7 C5 b( I' j" r) q) v! ]
实验现象6 p1 D) j% y1 S" K- c; u
编译、运行、下载后,现象如图
' x1 B) L; [% U4 h& N
7 E* p" W: E, N4 B5 C" L
20201223100221426.gif

: l  n' R3 ?. J8 {' y( B" I" w7 I7 ~8 i+ i, i; D' x
赞 收藏 评论0 发布时间:2021-11-11 22:00

举报

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