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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程
3 W" s+ P, J. s0 X, Y8 ~1 u这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。# i0 L7 E/ Y: f  F1 Q$ H% }
" v$ ^6 S1 }" w6 R3 {+ _
打开SWD调试接口* m% C4 a' `" Q! |- v# C
在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)1 o# ]9 z  L$ [; G' X$ V5 f

4 j  m9 x/ T. \% e3 `: ^# ?
20200419170920422.png

" G* i3 U9 }9 }) `! ]0 U6 Z: v/ u" f( A
20200419170759937.png
, d, g! `' n% ^. H: Y
: `0 n! o- Y, o" y6 t3 [( Z, ~
配置引脚属性
2 v7 v, ~( u4 Y( o( eGPIO output level:默认输出电平。Hight和Low% [2 R9 K" ~' q
- F4 H1 v9 S7 _2 b4 g9 P6 R, T2 y: c
GPIO mode :设置引脚输出模式。有推挽和开漏& l5 ?9 K4 U# J3 R
! r3 H5 q; r/ x) V$ }
GPIO Pull-up/Pull-down:设置上下拉。1 a1 N" |* N, j: d* {

3 o  J5 Y2 l7 kMaximum output speed:设置引脚速度。有四个等级。
( x# F, _/ g; A' z& \! @0 d) q2 {2 Y+ Z9 @6 h7 T" Y6 G
User Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。; F. J& `4 x0 ]/ r+ E4 O
5 D2 T  f/ M- B% e# c8 f
20200419172351532.jpg

& N" |% w1 L. B6 O9 d: p; q4 ]2 i
生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。3 X" @1 T: H3 F. G# u7 K
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。8 W* T$ R9 @+ }% S0 z
  1.   while (1): E2 R5 ^! a; X3 a. t- p
  2.   {$ n/ p. f6 }; s3 E
  3.     /* USER CODE END WHILE */6 L: R9 p( E1 a2 o: u0 J
  4. 8 I' v; i2 v  i1 j. v3 D! G
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉5 u8 W: x9 q1 b( b5 t, c( I
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    : k. s( F1 O! m1 t* T! N
  7.                 HAL_Delay(2000);                        //延时2秒
    8 O) F9 d! D5 ~( M
  8.   }  t$ j8 y8 N2 Y8 P# V  X7 H
  9.   /* USER CODE END 3 */
复制代码

( @& D' Z: X5 y# @编译后,下载烧录到板子中。, C7 t$ R  l; \/ P2 C1 t' ?# R5 r
有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。8 Y3 B4 X* H& X% F4 c& r! l

9 [3 X" u% m+ _( a4 ^GPIO HAL库函数. E& ~# o5 L/ s% W
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

# `! b% w, f! e# \$ F. o GPIO_TypeDef *GPIOx:GPIOA,B,C...
. @( j$ T+ R. Huint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15; y! q+ J% r) r, M( c
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平), n+ K# i( n& V8 k% g5 Q1 d
  1.   while (1)2 ^- n, l. s' w  E
  2.   {% n) A8 m! T4 H5 c
  3.     /* USER CODE END WHILE */
    / j' b$ I+ z8 W, ~& u- Q! n; H1 l6 ]

  4. 1 b4 Z8 G/ ]  ], S
  5.     /* USER CODE BEGIN 3 */6 ]4 h" {( G0 ?- @$ `- ~  ^
  6.                 HAL_Delay(1000);% V2 s' w3 ?* [/ m" I
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟/ x2 T* p7 _  p% q
  8.                 HAL_Delay(2000);
    6 k: b9 Z& p5 F6 P3 F8 ~
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟
    ; y: N' a& E* V* J4 g8 u# U
  10.   }3 S- G! U& G/ \2 v; N8 e9 q
  11.   /* USER CODE END 3 */
    $ _1 p0 U0 V( X  y4 s0 A3 l3 ?
  12. }
复制代码
: }7 l1 h8 C, _
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平- A; v# h2 U" ?9 p3 A& b" d

# z! h9 Q" Y6 j* b; i( ?( u, ^/ ?1 k GPIO_TypeDef *GPIOx:GPIOA,B,C..., |, R) o, }% o8 C- ?* f
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_156 e+ S: v4 E3 t" X3 \% o6 m
GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平) {; t+ \3 L$ Q+ [6 y, G. T
还有其他函数,大家在实际中运用吧。! \0 W0 T- P. ^3 v$ i) Q
                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平
    / S" Y! U2 @& \( Q* ^* |# J
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
    ( m6 _. a2 C& o6 m7 A
复制代码
. X- {8 x7 p7 H+ Z

7 |8 l: m8 F4 r
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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