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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程2 n, j7 ?& ]6 M7 ~( e
这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。
% @0 f. _: B# z& R( ?- _8 `  [0 f0 `/ r+ ~" Z" f, x5 Q
打开SWD调试接口$ M0 F+ }9 a: K4 b3 U
在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)
9 \! t) p' z" k+ X% v
# ]2 l7 \1 p/ ~: R
20200419170920422.png
# B/ G) P0 B) a8 L9 t/ j" m8 K

: ]- t( H) A/ }' p  U
20200419170759937.png
% ^( \; z0 Z9 |9 l7 q6 ?
) z. y( q$ b0 [$ e
配置引脚属性
$ B  z) e/ U. l, s7 d* S( NGPIO output level:默认输出电平。Hight和Low) ?, z- \% r4 A* i) P: u

9 V- I4 h- J& v: Q3 o0 j6 ZGPIO mode :设置引脚输出模式。有推挽和开漏
! \+ ]. _5 G5 I
: x6 @+ u# \+ ]) ^+ J$ T  b" C- OGPIO Pull-up/Pull-down:设置上下拉。* G) q+ F9 Z, v7 I7 R% E

; Z, B9 [# ]5 j/ ~! H* c) ]Maximum output speed:设置引脚速度。有四个等级。) Y$ O$ {8 S  Z4 t/ _! @

1 q: _7 {# ~9 {4 ^1 x0 F# TUser Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
8 Y/ W' X% f* x7 q. w1 Q# |5 ^  B4 G9 [3 k
20200419172351532.jpg
) e2 Y3 t9 @2 F) `- b% X% `
$ F+ w0 W; V6 ~0 R
生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。. }3 K+ |5 t4 K. n& v
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。8 }; h/ U( H, J% B
  1.   while (1)4 J$ |! V+ T: f! p8 E1 N0 ?
  2.   {, F% W& ?! p  N- T6 I, _8 Z2 T( @$ I
  3.     /* USER CODE END WHILE */& G$ L. S1 q! T) K

  4. 9 r' f/ ]) M0 ^, r, u( j7 Q
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    4 F; B8 c: \6 S, o) f' i! r
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    9 z- |5 {5 E, u3 ~6 h4 D: k
  7.                 HAL_Delay(2000);                        //延时2秒
    : r: J  \. d9 K6 @. x3 j8 A
  8.   }% G- H/ \, t+ D- I
  9.   /* USER CODE END 3 */
复制代码

9 k, U' n9 E( U0 i+ w% k编译后,下载烧录到板子中。
& `6 {: g' q2 ^8 T# ^$ m. M+ H有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。3 D, V( I# [$ s7 r. o5 y' J

  P* M. `& P# B# B5 _GPIO HAL库函数
) t! I  V8 @7 v& X# n3 j
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

( S: K) K2 Q/ B' Q GPIO_TypeDef *GPIOx:GPIOA,B,C...3 B% _' p: c  ~: r4 U$ q0 _& Y
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15; q4 W5 H0 x0 b" D3 o5 |
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)
- i: Y! x) i# p) F5 c1 d
  1.   while (1)* h7 v( \! C( n  `  L0 X3 Z
  2.   {
    3 W  r2 y0 ]! j
  3.     /* USER CODE END WHILE */; ~- O: {( i, f7 @% L/ o% ~
  4. 5 w: G/ k: a5 F& ?& w
  5.     /* USER CODE BEGIN 3 */
    / |: j* b" v- y" D9 K
  6.                 HAL_Delay(1000);
    , K$ z1 s5 y2 Q1 E" s& d
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟9 k! T4 U& c. I' W
  8.                 HAL_Delay(2000);
    : Y/ j( a2 w4 \" j' {; Y4 X" J( z
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟
    + }* ]( j0 L0 \0 z2 s& Q0 A
  10.   }
    / K; h$ |# p4 `/ U0 D
  11.   /* USER CODE END 3 */
    # S1 g: c% g2 ?& |1 Y
  12. }
复制代码
; ]2 }2 c7 B1 P& P( g- I
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平
/ ?. n- y0 N2 Y1 P, Q
2 k% _/ H% A: R GPIO_TypeDef *GPIOx:GPIOA,B,C...3 G  V! E! u" a9 G
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15. ^9 I$ [0 {* U
GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平
" K2 ^) v8 Y! a: H7 z3 n7 O9 I7 \还有其他函数,大家在实际中运用吧。
0 j- p, y/ ~# W- X                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平5 O8 H+ z+ U; \% c6 Q) v  ?' B
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
    4 K6 z9 _8 N! J2 A# G, W9 L
复制代码
3 k! S) L- F. b. G

7 k% ~" n& K+ T% j7 d/ X6 B
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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