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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程9 f7 \" n6 V! F( }. T9 X1 q" a
这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。9 h3 {2 x! T4 d+ d, h
# m& `: ?" f5 x' X; G  ~
打开SWD调试接口& X9 ]# X9 r  b5 w" H( y$ A' `) ^
在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)0 h3 {' l" A1 M* M5 A2 g5 V

- \- {, c8 t7 p; }
20200419170920422.png
- n1 z5 B2 _0 B- |3 [4 K0 {( i2 i
" W6 [! q; i3 |" q
20200419170759937.png

# m3 _( E. }0 }% p) c9 y  N; X/ T# g( p- w
配置引脚属性 # t( k" E* _4 ^& G4 H
GPIO output level:默认输出电平。Hight和Low3 _) o3 Q+ J, ]9 z" g0 p
7 C- E: E  m2 g( d/ [: j
GPIO mode :设置引脚输出模式。有推挽和开漏
) K; y6 p5 T5 i: }! T1 D1 @" L3 A, }2 f
GPIO Pull-up/Pull-down:设置上下拉。. R" O, K5 I2 b" s4 S" g

' H- ]5 Q# m# w8 FMaximum output speed:设置引脚速度。有四个等级。
7 A: ?0 s4 e+ o- _7 D& d: E+ x$ b& x) F
User Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
2 }8 _" b. [5 h6 Z7 {8 n. F3 q; o1 ^8 {& W. F5 _/ V
20200419172351532.jpg
6 j# X5 h$ j0 ^& V
3 [9 v  B8 N9 ^+ G0 v+ l
生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。6 d7 E$ |" }9 t
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。) L  a" Y! h2 S. Q$ w
  1.   while (1)) e. E! n6 |7 Y8 Q
  2.   {
    * Q1 \- @$ }, k
  3.     /* USER CODE END WHILE */6 m- i+ Q1 K6 i; |& w: k
  4. ! `8 C* o0 k2 c. z$ c
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    $ z6 T* K9 ?% ?4 N
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    ) u4 @1 o* T7 P, Z  ?/ O
  7.                 HAL_Delay(2000);                        //延时2秒
    " |, _# z9 F0 S
  8.   }; o" r' s3 A  B/ Q4 j' e% t
  9.   /* USER CODE END 3 */
复制代码

' R! a1 H" ^- ]$ Y: k  j% R' C/ B编译后,下载烧录到板子中。
9 e4 U. T$ Z2 X/ N* `, i有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。2 v  D. h, p! \* L' m! Y
, h- i. l+ v: ~4 X
GPIO HAL库函数
/ E! Q: s& g9 A5 x; i" L$ B
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码
" y# |+ D$ C$ G; p) |) j
GPIO_TypeDef *GPIOx:GPIOA,B,C...
* y3 w0 |# y+ A- A0 J; fuint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN150 O( X4 _5 L8 @3 E. D; m8 ^
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)
# N. R+ w; D: n" M% }
  1.   while (1)1 Z' {, _' h5 F+ |" [1 C
  2.   {: L+ s! Q1 s$ l" q) V5 O, Z0 z6 a
  3.     /* USER CODE END WHILE */1 C% j, o" [4 e
  4. 8 j# d/ h0 f0 P# q0 c% F9 D4 s
  5.     /* USER CODE BEGIN 3 */
    # \9 I% w1 B) I& x5 m" f% F
  6.                 HAL_Delay(1000);
    8 M1 m2 ]! d& v: g' Q. g+ O4 l1 a
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟
    # u5 r2 U* o" L( o3 @( A5 v
  8.                 HAL_Delay(2000);
    ! {9 n2 j' e7 e2 ~1 H0 l7 g% y% ?
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟
    " i# F% W: B6 V7 P- t- J: B4 @
  10.   }
    - v9 z+ ^+ x7 z: C/ q
  11.   /* USER CODE END 3 */
    5 r/ L4 S, L$ M4 m
  12. }
复制代码

8 l1 E( {( x0 ?3 P) i% o. yGPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平9 G- J& E8 N4 w2 `
& K- r7 [* P7 @1 E7 ~
GPIO_TypeDef *GPIOx:GPIOA,B,C...# f5 _3 N7 z6 t" X& z/ j9 [7 t
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
$ B% M8 w6 }* E- dGPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平
, c( Y" E9 T# ]/ Z4 n; e- M还有其他函数,大家在实际中运用吧。
! @  ~; J; l6 \' ]5 P7 L                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平
    7 {3 ^8 a; y8 K! b9 f, n
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平, B% I$ B$ j3 c. M, g3 h
复制代码

/ R% e! W  }% }0 K+ y" E7 F; D, S2 W. f
赞 收藏 评论0 发布时间:2021-11-9 17:00

举报

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