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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程9 J3 p% C  d9 Z9 e
这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。
- z% B8 @- e/ s& R' R. y- ?
3 M. R+ Q6 Y" L4 g& d! l9 _4 }2 g打开SWD调试接口
! Q7 ?* c9 F' h- N4 D% s4 M7 ?. T在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)
4 F- ^& c0 v4 z
( ]' }) u$ Z4 c
20200419170920422.png
% `9 e& {' w7 P5 T
+ S/ e. K- v8 U' S, c% q
20200419170759937.png
) }: ?3 Z: G. y, [9 B% v) ~$ K, ?
/ [9 S* w) v) h: w! `# u" F  b
配置引脚属性
1 T& L$ [* q& E* b& G' wGPIO output level:默认输出电平。Hight和Low
% u) s6 w' N0 X! ~: T/ |* V3 l  F. y/ N& a# J! Y4 o  s
GPIO mode :设置引脚输出模式。有推挽和开漏
- A. w+ P$ A  [' [, S7 T
5 j7 B1 ^# L) h6 Z; r9 DGPIO Pull-up/Pull-down:设置上下拉。
+ G* p2 z* h. N* b9 q9 y. x1 x5 v
Maximum output speed:设置引脚速度。有四个等级。, z+ r5 z3 y. d  l0 O. j. P

( E  r% K/ i2 M& y$ j  lUser Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
4 h! `5 o* Z% w3 C9 \9 [$ Q! E1 K, W% o5 w/ R# k- _; ~
20200419172351532.jpg
/ s& h/ d! n# l/ b5 O

8 X. |, w% b# z生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。. l5 L5 F8 W/ Y" x4 b6 r
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。" ?: S! k1 d. w2 k, T$ C! c$ C3 U" L1 }
  1.   while (1)+ X5 _. Q9 g$ @% b
  2.   {6 y6 ^% y  K+ i, m* H4 R: x# L  T
  3.     /* USER CODE END WHILE */1 r8 o! V0 G" i% c; x, |# R$ o
  4. 9 B# \4 i$ Y! k# L9 d
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    - \8 M  w1 }: w- l& ~
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    ; L$ `) m2 }$ e
  7.                 HAL_Delay(2000);                        //延时2秒
    + l& c. Y4 d) K* S% I% f! T* e
  8.   }
    ' [0 I9 F% |$ ^& K1 ?4 F* \) B0 j
  9.   /* USER CODE END 3 */
复制代码

- ]+ r/ ]/ N, y! Y编译后,下载烧录到板子中。
' \2 V9 T% |% l; ^; m/ z$ p有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。
1 v2 t, _5 l5 f
* [$ V5 P' t8 p" {) SGPIO HAL库函数9 V3 W$ j6 c. X# M7 X9 _( l% l
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

4 ^4 Q% G; l3 \- R8 U; k# | GPIO_TypeDef *GPIOx:GPIOA,B,C...
9 {( q7 I, \( X3 J: M( cuint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15/ ?, p/ p3 Y2 E. G
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)$ ~# Y# Y7 e# y
  1.   while (1)4 f" X, m% i6 D8 ]# `7 B4 j" h
  2.   {
    ; Z8 r$ l! C' {( N
  3.     /* USER CODE END WHILE */
    8 f, @7 u. u, }) r  w" s/ i
  4. : v( l# D" y1 ?& f9 @
  5.     /* USER CODE BEGIN 3 */' [& i. `4 x4 u9 v% `) `% i5 H1 G, G
  6.                 HAL_Delay(1000);2 w9 h! n  @5 M( s5 T
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟8 o, I5 E# w" j% w3 t/ v5 Z5 }  K
  8.                 HAL_Delay(2000);- R/ S, y! W) ?( D8 z7 \! Y
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟7 |  R& c" r7 [5 G" h5 b
  10.   }
    0 @! ]6 u  U1 E; B1 V' b3 k
  11.   /* USER CODE END 3 */# B$ h% l/ Z$ k' h+ j
  12. }
复制代码
4 B# }' Y! S! u( q  A6 W: M; J
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平
/ S2 C  n  a$ V% f
. J2 D6 N1 S* F9 l GPIO_TypeDef *GPIOx:GPIOA,B,C...1 r# i5 k2 r. A" h. @9 d" B
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15% q  J8 x3 ~: E3 Z' u3 E! H
GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平: ?. C) J: t# u$ c, }
还有其他函数,大家在实际中运用吧。
0 c% f- [2 U9 o5 ^                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平
    9 N5 y( j% z/ x5 z
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
    ; {$ J& N# i* ^. w" Q
复制代码

2 g! k- Y/ o8 _5 }% _' N
6 l4 Q: ~0 K$ j6 v
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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