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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程
8 t6 B1 Z0 W, C+ o. i$ g, R这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。
9 X2 @; A, H* y3 X! Z; l3 m/ T7 V, i
打开SWD调试接口
0 h3 t! o8 |5 C8 m0 ?在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)+ t0 g9 d! o4 S; Y5 T# D

. Y5 @- B$ d, m: R1 `
20200419170920422.png
* \* Z. s7 e( g. p0 O# }! B9 u

5 a! }& i: b7 r( Y9 U/ ]: o  x: [
20200419170759937.png
1 p) Z  v+ \% u
5 _3 \# b4 ?* I+ |
配置引脚属性 4 G8 L4 }- X  [5 o9 |' ^: {
GPIO output level:默认输出电平。Hight和Low
; n  J6 |- X2 D+ Z9 h) Q$ d/ H% x% E. a* m8 f# t- v7 W: }3 T1 s% q
GPIO mode :设置引脚输出模式。有推挽和开漏4 v% v2 C* X& ?2 ?

3 i: y  q: k. J8 h+ X* c" XGPIO Pull-up/Pull-down:设置上下拉。
. U. o' B6 M0 V7 ^# ]
) I: R3 [- `/ C5 Z$ N/ VMaximum output speed:设置引脚速度。有四个等级。
, U2 C  s. w" I: Z. w" K6 d9 ~$ L* e# R# \5 i+ O" Y, p
User Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
. a+ U8 f+ _) }/ O+ I& A
; p% {  e. N6 q2 ]5 n1 _
20200419172351532.jpg

; D0 |+ S2 A- u. Q" h8 }
  T& X6 p( T! J3 ?- Z生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。' m$ a6 L# ?4 H2 @# N
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。0 Z' H/ d- Y( N5 c: N) O
  1.   while (1)8 z9 f* \, V& B, F1 v
  2.   {
    9 |) G6 \* R/ I
  3.     /* USER CODE END WHILE */1 E* r, U# s+ C
  4. . j/ M. b  |( Y+ l* S- w
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    : D! U6 ~& S' i
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚& E& D" G6 C$ ]1 p$ K
  7.                 HAL_Delay(2000);                        //延时2秒
    , H3 L/ F# F- l; i, W4 }8 I% v
  8.   }3 P  Z+ T% C! e% }; E- M
  9.   /* USER CODE END 3 */
复制代码
7 e% ^* N' r4 J6 Z4 F
编译后,下载烧录到板子中。4 q" S$ ?1 \/ A9 F2 \: M
有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。+ M/ A; I; y) W) z. `

4 K- `: b3 W& e, k7 d2 TGPIO HAL库函数) n2 i- g) w0 T9 r) o2 p
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码
& O) ]. V& U7 F8 l# [/ f: b) L
GPIO_TypeDef *GPIOx:GPIOA,B,C...
, v. X' A( B- ^6 x7 O1 }0 Vuint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15
6 j% a% F. M( rGPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)$ I- s2 ?! S6 ~- J
  1.   while (1)6 E( n; k3 j, {! K3 z( |, z
  2.   {
    & A9 H% j* c8 F) A: S: `- h
  3.     /* USER CODE END WHILE */5 k: v$ V# ]" P! v

  4. # x% r* F0 L( k- b
  5.     /* USER CODE BEGIN 3 */( C, L3 q1 L; @, @) r7 r
  6.                 HAL_Delay(1000);
    + C, |/ o: I  u
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟
    ) {. q2 }/ @% ]
  8.                 HAL_Delay(2000);
    5 X  h- X3 N% O  |/ G0 N
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟
    , I8 Y0 N$ k9 u6 k( u
  10.   }
    ! N& x- h" A+ {  E
  11.   /* USER CODE END 3 */) c8 |# {( A" O5 q. b
  12. }
复制代码

; M1 e0 P2 p8 N+ u$ z0 Y8 g1 KGPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平
( v  {% r5 E" J
0 F1 q" f( @2 }( G) |2 O) Z GPIO_TypeDef *GPIOx:GPIOA,B,C...5 v  Q8 n' \2 S( `; ^4 B5 }: J3 b
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
7 a$ [% C4 j9 E- J8 wGPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平
( [  Z* m% [# c3 C: ?还有其他函数,大家在实际中运用吧。
+ g: {) W# d4 n4 D4 u/ O, }5 {( v                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平
    9 m5 L4 V- n. }! B2 w: g
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
    1 k" g& o6 O. C+ t# J  O+ [8 m
复制代码

- n( o4 O2 e/ J+ k1 B+ M5 i' J
( a' Q7 a% C: ?
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版