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

【经验分享】使用STM32G4 ----按键的使用

[复制链接]
STMCU小助手 发布时间:2021-12-8 21:00
1.按键电路原理图" Z9 {, T! ]6 C* f7 E- {) N+ d; g

, r1 [8 C: }! K0 `+ b: @8 j4 p
20210424110359377.png
9 n1 \+ y+ s4 @  [2 M& o) s

5 c$ l# I! |, \  N; ~# c; u2.使用按键控制LED亮灭
( O* r8 a. ]" e' `, Q) J6 G
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    2 R# a& P! m3 e
  2. //读取pin的状态值,然后返回
复制代码
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
    & v7 {) g# i. P9 P& G1 Q
  2. {
    8 o  n5 Q4 Y# R; ?- s2 L
  3.   GPIO_PinState bitstatus;
    6 v, _. f7 m$ X5 z, N! j5 a: x

  4. 6 F* v" `3 |7 C) l7 l6 f
  5.   /* Check the parameters */$ g5 Y7 L! u% v) q; K) A1 l
  6.   assert_param(IS_GPIO_PIN(GPIO_Pin));
    " \4 k) d, {$ o1 T1 n4 e* @
  7. ! {1 r0 g/ o2 A5 T
  8.   if ((GPIOx->IDR & GPIO_Pin) != 0x00U)
    # \( J5 l4 K+ s4 f6 I
  9.   {
    : y1 \7 x: f, B& c4 J
  10.     bitstatus = GPIO_PIN_SET;" a/ q/ i, o6 t  |
  11.   }
    # L  Z7 u6 Y7 H, r; [+ x$ T3 o4 _
  12.   else5 T( l4 s2 v" z8 r! s! J- p! L
  13.   {8 K  z. z+ i! u$ E/ {# s2 X; V
  14.     bitstatus = GPIO_PIN_RESET;
    ) k5 d& p- E  h) \" b6 @# D
  15.   }) |: u1 m' [! p  ^
  16.   return bitstatus;4 g% F/ U8 y( ^) {+ A2 K# m4 Y
  17. }8 i0 H$ C% U+ o8 \
复制代码
% m! b7 v* F# ?
当配置为GPIO_MODE_OUTPUT_PP时,使用HAL_GPIO_ReadPin()可以正确读取出这个pin的状态值;9 T% p  |! L7 A/ Z  }) ^
当配置为GPIO_MODE_OUTPUT_OD时,使用HAL_GPIO_ReadPin()是读取不到这个pin的状态值的,无论这个pin设置为SET还是reset,读取出来都是reset的状态;
9 |/ @1 d/ n% K
  1.                 //B1
    : o4 Y  |4 O* U# O
  2.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET)4 p! b& W# ~7 ~0 W% c* @
  3.                 {
    ) p: l- R) ?, N. ?1 q6 U9 ^2 j
  4.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);2 T3 P5 O* u# m, U' V
  5.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    " I0 x: F* k+ P# ?! K) [
  6.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    4 k; E" W, _, S3 x- }4 g$ Y
  7.                 }
    9 V9 l7 ~- I  d& x: z! ^' `
  8.                 6 k( x- t% H' m5 `5 u$ ]
  9.                 //B2! b6 S# L  F+ L2 Y8 _
  10.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET)
    2 {# h$ f/ V0 c, \8 K! B
  11.                 {
    5 I: R' n: D/ m
  12.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET);
    7 e, {# t1 x, o$ C0 q
  13.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);& Q4 }! K  Z' l( V7 m" f8 c
  14.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);  e, @/ R; t1 l. q2 z  s
  15.                 }
    ! j) i8 R* c, b3 c
  16. //B34 a& E* x6 b, o# E& g& t
  17.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET)* `$ j9 J3 ]6 N
  18.                 {
    / X9 s0 |- V/ i& p. ?% K' e
  19.                         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12 | GPIO_PIN_13, GPIO_PIN_RESET);' M9 B' t( m& \, p8 V- A" y& b
  20.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);& C: j. ?# c- M- H! E! {, ~
  21.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);2 x1 K0 C2 Q! ~& w: k3 u
  22.                 }
    # y" R3 }% H' k3 C
  23.                 //B48 E% t4 I* u& F2 u
  24.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)
    9 l9 o  p/ D/ O4 R: T
  25.                 {2 l: _5 `+ O6 D0 u4 {6 }
  26.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_RESET);+ F1 r7 E2 [# v, z2 u
  27.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);6 z4 }: u7 F6 f8 y- @
  28.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    0 K; o- @+ z* b: U" y
  29.                 }   
复制代码
9 e: L# u  {. E
            
& i2 {4 k  j1 t3 U4 L5 w( A) v+ F
$ z( M2 Q- @* E. |- m) H; P  l- z: h9 W% O$ Q
收藏 评论0 发布时间:2021-12-8 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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