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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程! K; H, L2 u7 w8 a+ _
这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。% X8 z9 H6 w4 h  G, }( J
' j6 d* Q3 s8 y2 B- c
打开SWD调试接口
! }4 d# r) P; Z$ Z* |+ S在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)- J% t* ?; o6 X7 ?3 b

; T+ M1 j7 d$ V
20200419170920422.png

; e. a: h% @$ T2 Q4 X- D- E' _& c8 ^1 Q- I$ D6 f
20200419170759937.png

- g2 h" j; k& k0 Q; Q8 G  x
& C9 N" G, s' j配置引脚属性
, M% L7 `( s9 L. u0 \% _1 hGPIO output level:默认输出电平。Hight和Low
3 p5 {/ l# O" Q8 ?6 K* s) `$ d9 w# _- q
GPIO mode :设置引脚输出模式。有推挽和开漏
0 j7 w8 R  J. g( o0 Q4 \, M/ {! e( `5 H( c9 H' N1 i
GPIO Pull-up/Pull-down:设置上下拉。
6 D7 o5 R' Y8 L# N  h, {+ n+ w* y6 Y1 U0 I& C
Maximum output speed:设置引脚速度。有四个等级。
2 T8 a% A! T! r  D% M& ?% p- H* M% W8 e7 f' J) p, J+ N
User Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。5 L; y; ~9 ~8 L* o. I

, O, k* \. U6 K. T
20200419172351532.jpg

2 U" Y. {; H( L' ?0 G; n# C
: r+ S- W) h5 b生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。; B2 o  \# s6 z3 X0 L/ U
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。8 G0 U1 u$ |- Y% A% O( ~
  1.   while (1)$ D, @7 Z) g% }0 O
  2.   {0 Y/ B) u) b1 [9 L  S6 r
  3.     /* USER CODE END WHILE */
    ! Z( _3 F+ k+ w
  4. 3 D; E. v( b1 }9 E0 F8 g. S* D
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    - `" b" f1 t1 X' c
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    + ?+ ]1 F) Y( w$ ?8 W' V
  7.                 HAL_Delay(2000);                        //延时2秒
    # q% X7 Y2 M$ v' A6 m& \
  8.   }1 |: Q! p9 h/ a, p' D
  9.   /* USER CODE END 3 */
复制代码
9 F# F& G7 a6 s$ h% I' p
编译后,下载烧录到板子中。
0 W  Q! c: y5 M有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。/ W/ Y/ T" Y4 _! Q

+ J7 B2 U* E. ^6 f* u" FGPIO HAL库函数! B: D  A' v0 Y' i2 H0 N" ^) ]* Z
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

4 }! M8 v  i8 z9 r+ _9 Z, \ GPIO_TypeDef *GPIOx:GPIOA,B,C...
' A6 _5 n6 E1 a9 Y0 |+ uuint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN159 ^+ _6 N( e7 @! [* d
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平), }6 f$ N# @7 H
  1.   while (1)
    2 q# T1 D) B3 H
  2.   {
    % Q$ `1 t% ~4 m+ r# S( ?% w
  3.     /* USER CODE END WHILE */& E7 {: ^! Y& W7 }( D

  4. 6 u  r& j2 r' y9 [( O' ]
  5.     /* USER CODE BEGIN 3 */
    6 |# i8 B' ~1 J( o" w
  6.                 HAL_Delay(1000);  m% ^! I* n" ], ~; M" e% ^, ]
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟6 m) \0 P3 t; j$ Y
  8.                 HAL_Delay(2000);; E' e& x$ o- k' {
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟7 }; J* ~4 n" W% Q
  10.   }" ^& X+ j+ z+ }' W! c
  11.   /* USER CODE END 3 */
    4 j  v5 e2 [: N  N7 N
  12. }
复制代码
; u# v& Z2 i/ l: Y- S
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平0 N' p) Y9 B' g) C1 u. e  g
. V5 ^! K/ C1 d2 J" j
GPIO_TypeDef *GPIOx:GPIOA,B,C...
& j; y8 j- X$ K% M7 I3 p' H! Huint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
8 {( A! t. R, y! D  h* oGPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平$ a1 v$ `& M/ H. j4 L6 K' m$ ?
还有其他函数,大家在实际中运用吧。% k) E# M+ s& v5 B2 V6 r. s
                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平2 a8 s5 U* S: q, d) ]
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平+ U  p8 R) i1 q4 v# i* u. [3 f3 G2 A
复制代码
$ R& x+ ?0 e1 Z2 \1 G9 b0 C0 p

3 @7 w" x- f9 Z. S3 j
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版