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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程
, c' [4 _  w9 n这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。3 ^  P4 Y# ]" G9 c' b8 Y# S# Y
, v8 ~  d5 u- d! S
打开SWD调试接口
- u% ?- p! i9 }: _0 V在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)
: r! R9 s* @/ Y: i& f* b% h) q
4 f3 l6 \' L1 r' s- @
20200419170920422.png
8 g" R1 y: n$ r/ u
. ]- s! m; Z9 A" [
20200419170759937.png

3 }5 w) p/ }3 ^3 T
4 R, x' y( w* w/ ^; @: x, t配置引脚属性
) k. f" E" b, h% t% b; WGPIO output level:默认输出电平。Hight和Low
* ^& ?& R! J; g
" _3 y: R& e) ~4 A- P5 ^GPIO mode :设置引脚输出模式。有推挽和开漏& _9 b" s! b  B; @6 d

4 J1 W9 t1 ?. Z" F% AGPIO Pull-up/Pull-down:设置上下拉。- I1 F# _7 r+ }, {/ Q7 J

3 `0 z2 f- @. x6 O* v5 ?% |- {Maximum output speed:设置引脚速度。有四个等级。
4 [1 F0 ^  L! d: B* d; @/ _9 ?
( n, h' K; L! W+ SUser Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。7 w7 {$ D5 L' l9 g5 I6 J

  v: h$ j" Z4 O9 t3 w' C
20200419172351532.jpg

0 I! z% P4 X( D7 O; \& [" I+ p$ {
生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。
9 p# K) W( e2 Y# U% D在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。# i0 E3 e: Z6 l8 @2 L+ ^9 ]0 Z
  1.   while (1)
    2 f3 d/ W: O  [+ K& O
  2.   {
    ; p- [% C7 m* s. o* G
  3.     /* USER CODE END WHILE */0 `) e: T! P: x: s
  4. , ~+ s8 g! B/ A5 G) J, p
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    , g* r( @( T! D% I1 f6 K
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
    # G( m" X, `  h# `# Q# J1 Q
  7.                 HAL_Delay(2000);                        //延时2秒0 _9 }9 U7 }: N. }1 b
  8.   }. l% ]& h( d+ F6 n7 f' ^  ]. t
  9.   /* USER CODE END 3 */
复制代码
. I" h3 r4 J# y# Y
编译后,下载烧录到板子中。
2 h0 I% A! C. A有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。6 d8 R4 P5 V6 P$ v* y

; I; p& U4 D$ [% P: pGPIO HAL库函数  c" C6 N( r# K7 v1 j7 i) s
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

# h8 [+ I6 Z+ ]$ `/ ~$ R+ A GPIO_TypeDef *GPIOx:GPIOA,B,C...) _2 w% M  m. Q
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15
" W3 d4 P. V9 ?- A3 q# FGPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)/ n. Z2 N: H# \6 L+ \6 H2 o! a2 b
  1.   while (1)( ]* `6 Q: _" ~' T) F4 r
  2.   {' _1 c2 x: }) ~" x
  3.     /* USER CODE END WHILE */, u" m5 \( f4 L- r
  4. 5 ^5 q; k- `( B7 G' L' g7 Y
  5.     /* USER CODE BEGIN 3 */
    + u  u' m; P: A- Y5 O2 ?( Q
  6.                 HAL_Delay(1000);/ b8 R( _: v4 t& N7 `
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟  H" q! w% v/ }8 ]# b4 \
  8.                 HAL_Delay(2000);
    + r" F' y1 _/ l' l2 d
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟$ \; \' G- }# {5 ~$ u6 ~/ g' e
  10.   }
    - g0 v6 v! C- z8 A3 W
  11.   /* USER CODE END 3 */
    * l: y8 G$ O% b  v  C
  12. }
复制代码

. X( w, P: M; r8 YGPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平6 t; ?+ \: B2 A* h
2 m  K, v9 z7 w) |* _
GPIO_TypeDef *GPIOx:GPIOA,B,C...% I  C, a2 I5 R9 L1 l5 i  D
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15/ e7 W& ^: Z# w6 N
GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平
/ r- S/ {# t, K+ u/ n还有其他函数,大家在实际中运用吧。
$ ^2 j( k1 _/ \- H- X8 N! M                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平. y5 J. A4 X) t
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平5 _4 @" h, d. Q0 h' M
复制代码
) n; k. `3 [5 F1 B# A7 ]' u: A8 V

5 s0 _6 b; W2 Q) t3 p7 m
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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