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

【经验分享】STM32G0学习手册——点亮LED(GPIO用法HAL库)

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程
1 N) j6 h# |! i/ i2 V5 g: }这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。
* y; M  i( G- S! f
' a# Q% [- l2 U% j5 J5 e- ]打开SWD调试接口
/ j7 Z  H# X2 s% p& y0 t在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)1 w. V2 B4 ^1 b$ v
; g& m" K2 ?8 V, U! Y) u* L# h6 l" \
20200419170920422.png

# `, w/ |7 ?) i4 \3 r. }8 X+ r
9 D: X; c; R3 s% j# ?5 C
20200419170759937.png

, L" v2 y6 U4 O* B7 V
" [/ _) T, p, n  G) L9 a配置引脚属性
) `7 v! l: L  ^) M, L, NGPIO output level:默认输出电平。Hight和Low$ a6 C5 Z/ ?/ j
% z3 B1 A  z3 _) b/ a2 H
GPIO mode :设置引脚输出模式。有推挽和开漏
* r/ u: q& h8 m+ _
  O9 I. ?! X: y0 k  d) VGPIO Pull-up/Pull-down:设置上下拉。
! G: G; k* M0 s" f5 }8 E; m+ e8 B
; D' b( K  a' Z" c& Z# \4 MMaximum output speed:设置引脚速度。有四个等级。
$ \( t% h. I/ a" C( E! H; L1 l. u3 ~; G# k
5 u& u* ~# Q/ ]9 `( V7 QUser Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。% W) t( m! K& \

' G* D6 w5 ^4 |4 Q
20200419172351532.jpg
; j% c, \! V1 T! Y5 q
4 X) D: N7 O1 P9 ^1 |( s
生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。
1 w- Y$ @6 i8 @+ R在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。$ F6 D& x) s5 j
  1.   while (1)
    6 W" T5 ]. p# v
  2.   {: c/ ~7 Y9 p- L% R  r' Y
  3.     /* USER CODE END WHILE */- Y7 U  Z  I4 J$ f6 Q6 a1 `
  4. + h8 @5 A) j2 D7 b( |2 p( H
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉! J( O$ B) l" K3 C0 j( o  c
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    + }+ t1 m2 Y( m- o+ z; u  ]7 u
  7.                 HAL_Delay(2000);                        //延时2秒
    ( W+ D, j- @- D6 b8 L
  8.   }
    ) t7 o2 A9 K+ }( J3 y9 H/ b5 k. |/ X
  9.   /* USER CODE END 3 */
复制代码

4 ~, N# L) S7 F# I! h$ D& n, O编译后,下载烧录到板子中。2 T, Q# N2 L  d) o3 h
有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。
* P- W5 |! c* {
+ [# A: o* ^, i& H; x& q% GGPIO HAL库函数; z& @0 u/ K6 {" r9 J$ p
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

9 Y9 D- J3 r4 Q) E1 i GPIO_TypeDef *GPIOx:GPIOA,B,C...; d. }" N: p/ a, I
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15+ I# M  W3 k) S4 i9 R
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)$ R! c5 S. I1 A( C* a! \
  1.   while (1)# x* G# @6 ?% D' \3 {8 }8 D
  2.   {
    - j+ Y. F, |% k  ]7 t. u
  3.     /* USER CODE END WHILE */5 [, ^# H! _1 i& e+ h1 a* H

  4. ; R2 Y% g  Q5 A; l+ y
  5.     /* USER CODE BEGIN 3 */& b2 l" P1 u* m) Q" a$ ^) L- e
  6.                 HAL_Delay(1000);! M  X1 G' E0 Z. u
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟3 c2 L% P: y0 ]
  8.                 HAL_Delay(2000);* S" |0 v8 j& Q2 O& v7 x7 b7 P8 y
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟5 l5 g% E5 M7 ?3 c0 a) b1 V
  10.   }. @1 v; t! W0 H# \
  11.   /* USER CODE END 3 */
    # D5 ~& g% h$ m
  12. }
复制代码
' e7 K1 t7 U7 H3 w3 t" ]
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平
1 g1 ^3 f& X! T
" ^5 Q( M1 ?8 k" A GPIO_TypeDef *GPIOx:GPIOA,B,C...
9 ?0 G4 Z% I" Puint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
/ ?  a4 u" j1 X! |& YGPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平& w( I* w+ W/ c& B+ _5 A1 H: D
还有其他函数,大家在实际中运用吧。6 B8 J3 f, M9 k1 h8 _9 l" Y& d. K
                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平6 C6 f( P% w. D- I& X) l- o1 [% o
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
    7 V0 D: n3 c+ E" _& F5 f8 f9 r# k
复制代码
: _) p6 U0 G" V7 [3 G' [

6 h8 P  K( z! k  }0 |
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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