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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
新建CubeMX工程9 |& f) S1 Q% G
这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。
9 h+ G- G3 U$ r) l* |
2 Y8 v! s1 n$ u打开SWD调试接口7 s. K% O4 P+ t. D* \' j5 Q- P* ~
在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的), T: X6 V( z- D3 S& M' H, ^& g
  a0 `9 W" [9 R2 u  P
20200419170920422.png
* I% @  C1 _* U' P  D! \
( C1 v, U8 h- z; a2 F7 X$ ^5 T7 R
20200419170759937.png
6 ~9 W) c$ s" P# @, O5 x7 Z$ ]
5 P# l; {% n, A% L
配置引脚属性 $ M1 E6 ]5 a- k& p3 P" z
GPIO output level:默认输出电平。Hight和Low
5 L; `3 }0 r& F% G& f* L: p2 X8 Q; ?3 w. R3 K* e  `1 I
GPIO mode :设置引脚输出模式。有推挽和开漏
2 }* z9 ~6 o6 _! M: s8 d4 p& t9 f$ z1 ^% _+ t1 V# g9 f3 n
GPIO Pull-up/Pull-down:设置上下拉。
9 t5 V- j# d& C2 j1 j. w
8 B3 w8 h* V' [2 W% b, I( q. rMaximum output speed:设置引脚速度。有四个等级。
/ V( ^4 |* j8 K& V5 [0 i0 E& P
8 d! J8 @5 J0 o* XUser Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
- I0 Z8 ?0 e2 Z, ]' l) X  I8 a
# F) z+ z+ y+ x( {0 X  k1 g
20200419172351532.jpg
, u5 T: P9 N5 k/ ]2 x# J

- C, J% v+ i5 z) }' L5 M生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。* E8 \: b8 `9 E) O4 y
在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。+ }# k' r7 U8 j( T: O' @& J
  1.   while (1)8 g. J5 A* U' b8 I2 }6 |  |7 r3 Z
  2.   {
    . b/ n9 F# z# Z+ D0 b
  3.     /* USER CODE END WHILE */# o3 y* E6 w5 }" T1 V
  4. / D1 ?: n* v! N1 \3 `9 Q% Q' \
  5.     /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
    3 |# _5 n$ S' d. V' r# S
  6.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚7 F% ^# d  @0 ?- {( a
  7.                 HAL_Delay(2000);                        //延时2秒. t2 g- v7 m( z, Y
  8.   }$ @6 X+ H/ G' E" A" E( o! M) N6 l; g
  9.   /* USER CODE END 3 */
复制代码
2 f* c0 Q7 h/ w$ r, w
编译后,下载烧录到板子中。' f" i, F2 z6 v8 B( |# O
有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。
& i1 z: _9 B0 i
: U  W7 s6 T0 ?# u- N4 jGPIO HAL库函数
2 Q* T. `& b' j/ @* y9 x: e
  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数
复制代码

" V8 w2 r  ~3 |4 @: U1 B GPIO_TypeDef *GPIOx:GPIOA,B,C...) n. E  h- r- l0 i* b
uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15* {/ K- {$ a; V, t
GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)
( G/ L0 i, H: N4 m/ g/ \
  1.   while (1)
    5 D7 b0 J4 H- d& O. N) v
  2.   {2 [4 L7 y7 e) e- B- W4 [
  3.     /* USER CODE END WHILE */6 Y% f8 @) c& U, n/ ~9 D$ J! ?, q

  4. # w  o5 }# G8 F' e0 G9 L+ H+ W
  5.     /* USER CODE BEGIN 3 */
    9 K; b, j# [# x! Y  O! Z: R
  6.                 HAL_Delay(1000);' O9 }2 I% V5 _% i  |; x6 T
  7.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟- U# k- r; Y/ b& B( m0 ^! s  q
  8.                 HAL_Delay(2000);% g' H$ F: k2 b
  9.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟( j$ j; s9 h: a4 {: j$ b; d' H+ V
  10.   }
    ) I+ U6 R. a4 U" b9 l4 q
  11.   /* USER CODE END 3 */, ^8 C. o0 K& N1 b7 ^3 a  O
  12. }
复制代码
, b- m# f( l0 Q* @7 j, M' X
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平
, M. ]# `5 B" C* ?  J+ k$ Q0 ]( |, K% V& k+ J! y3 k
GPIO_TypeDef *GPIOx:GPIOA,B,C...
) O4 M2 b& p0 A  ?uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
% N/ X: o) q& c* I! K/ |0 P# ]GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平$ `* v$ m; H( S+ S
还有其他函数,大家在实际中运用吧。$ C$ f8 [9 V. x, ?/ W7 _0 p! g
                     
  1. void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平
    + r3 m$ y( k9 n/ i- w: F
  2. HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平
    2 z, W/ f' M4 `. Z* T/ g: H: f
复制代码

! s  `4 l" U. |
- b  [4 f6 a: b0 N2 S
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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