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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程
2 F- M6 L& L% r6 B+ k. p( f2 i这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。3 r; k, j1 s* \6 k% G

# ~) I: v0 A, ~0 R& J8 N打开SWD调试接口, x, z& D  r0 X% _
在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)
5 x8 Z; r1 m& k' }* G# j
& @3 a# Z+ Y" {
20200419170920422.png
/ F  f' T! [( e0 i2 e

! ]+ b! m- O) _  [0 @" `; S- K
20200419170759937.png
. g' r# w$ m6 `' z

# q* k5 ^7 X+ i配置引脚属性 - ]4 t' v* |# M  A
GPIO output level:默认输出电平。Hight和Low
& R1 ^8 U5 p: Y' Z" _( L; @. F0 u& X) E' Y4 y8 E8 g
GPIO mode :设置引脚输出模式。有推挽和开漏  k1 B+ h$ k* D( N- S7 y& K

$ a$ X4 e4 R( ZGPIO Pull-up/Pull-down:设置上下拉。) ^& G( O& t1 I& I. b3 G& V: c
! F4 ]  \% V$ }6 }) S* }: b4 u
Maximum output speed:设置引脚速度。有四个等级。
" p+ Y) K2 F* [( {" ^+ ~% ^
! z; L) _2 k6 K0 D0 kUser Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
6 J3 Z+ }$ O8 k1 q0 ^
- P3 N7 z4 E& s9 i
20200419172351532.jpg

+ c, n  Q# C9 ~) ^8 h3 r
) \; ?! J4 m2 ]+ H: c, |0 P0 {生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。
' N. g. i. \2 {# s! h: S) w在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。9 c1 M& I: F: }
  1.   while (1)
    ; M( L6 W2 G6 V( a2 S0 S( F
  2.   {' B; _/ t2 ?7 p1 M
  3.     /* USER CODE END WHILE */+ k6 I" `6 s' W0 W6 a) n- }
  4.   q, c; k3 Y1 K1 E- f- u
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    / L4 W3 s# t  `( o
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    # J8 V6 h0 ^* _
  7.                 HAL_Delay(2000);                        //延时2秒% @2 U! o( a! ?
  8.   }! O/ J* [0 }( s7 W
  9.   /* USER CODE END 3 */
复制代码

. `9 t1 B; e$ {9 \8 C编译后,下载烧录到板子中。% r/ p, p9 g% S9 H
有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。8 p1 S. t' Y' k+ r6 ]2 v

1 K4 a5 w. ~* L) T- _8 ?GPIO HAL库函数
. M+ v* _8 m5 Q" y) s1 W
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

, O, k/ T& X9 F% E5 \! G( ] GPIO_TypeDef *GPIOx:GPIOA,B,C...
" T4 r" @# f3 F- }+ C# ~uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15
0 m, l0 |0 G9 C9 Z$ e8 RGPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)
! q- x0 {3 B0 D# O( g' Z' j
  1.   while (1)
    ; Z; W: U) r- a& Y, |, L( D) O. Y
  2.   {4 C: U+ w- j2 `, X
  3.     /* USER CODE END WHILE */
    - _# ]# o& S, g. o) K; }/ }
  4. ) M) Q% z* a6 ?# |6 _1 ~1 N. d0 E
  5.     /* USER CODE BEGIN 3 */, u/ i& u& O/ q2 N, S. @! C6 v
  6.                 HAL_Delay(1000);
    " |3 V+ T5 Y) g1 a
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟6 g/ B( P2 d3 ^1 S7 m& W( g
  8.                 HAL_Delay(2000);
    - ]: Q, e  |) v# B
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟$ G) r4 ?% e. h: d
  10.   }8 |3 Y' ^/ x0 Q0 g( m* c, Y3 O# f
  11.   /* USER CODE END 3 */6 x$ R; m, k2 g+ B! `  R1 C
  12. }
复制代码

5 L7 R' _9 {: O7 rGPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平
* M8 k+ _, u* A6 N8 v6 I: `& R
5 \5 X9 U, |9 c2 L3 t; [ GPIO_TypeDef *GPIOx:GPIOA,B,C...: x/ U. M6 i! [: k/ u
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
' d. n: M) s9 f3 E+ c' ]$ \* d/ fGPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平
5 _4 x, D" i% [& K* L, Y- D5 U还有其他函数,大家在实际中运用吧。% S9 e+ E- x- e( X! q: J
                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平. E' T" j; T# Y  I% \) R% C& H
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
      k( ]& x# w  _9 U/ G! D' l
复制代码

( E. _  Y! B" K4 K
; l* ?5 X" ]1 E4 U* l- }* {
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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