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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 21:00
1.按键电路原理图% U( ^5 V% o& V$ O7 g. A) E1 F( B
4 i1 C9 e9 z0 s. y8 i' G
20210424110359377.png

: `0 r' {: D8 h$ ~1 i' p+ o/ R; G% ]
2.使用按键控制LED亮灭

/ W0 r/ X5 k: P( q
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);' }% x; K0 s4 ^. P) c
  2. //读取pin的状态值,然后返回
复制代码
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
    + g) s9 p1 {; M
  2. {5 _6 S2 K3 g! m7 A) u$ v3 w0 q
  3.   GPIO_PinState bitstatus;" g  G" k% }& I* P1 T# e. [3 ~
  4. ) A& u, O9 M3 W# t
  5.   /* Check the parameters */
    / R0 f+ V9 K5 Z) @4 K
  6.   assert_param(IS_GPIO_PIN(GPIO_Pin));0 R: G+ x' Q1 R

  7. 0 k! S" t5 l- O0 H3 w3 d& G
  8.   if ((GPIOx->IDR & GPIO_Pin) != 0x00U)/ g& B0 z% ^/ p$ R! Y# i
  9.   {0 Q0 j. G* s# |
  10.     bitstatus = GPIO_PIN_SET;. Q$ z) j- ~4 W/ i9 \, D5 I' O) ~/ i
  11.   }
    - H6 c! @4 ]4 w
  12.   else
    4 q$ s2 n% R# T- `
  13.   {
    ' Q9 e7 m" x4 [% B, j4 |- T
  14.     bitstatus = GPIO_PIN_RESET;5 J4 L, J2 C2 ?2 O0 s
  15.   }3 E  i. a: K, F7 X
  16.   return bitstatus;
    ' r  o, d" O. R1 U3 W2 h
  17. }8 g0 e. s9 B& d' I4 h4 R9 G
复制代码

( }; d( U7 P3 o* k; ^6 `当配置为GPIO_MODE_OUTPUT_PP时,使用HAL_GPIO_ReadPin()可以正确读取出这个pin的状态值;2 Z- o8 M3 F5 M$ C9 r
当配置为GPIO_MODE_OUTPUT_OD时,使用HAL_GPIO_ReadPin()是读取不到这个pin的状态值的,无论这个pin设置为SET还是reset,读取出来都是reset的状态;
8 y& p8 D) y2 J/ f2 ?% ^
  1.                 //B1' Z. J; n. j+ R- e' K
  2.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET)
    & {% ~: j- {- I) P
  3.                 {
    8 J" c7 O" u, ?7 {: t2 S# J
  4.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);+ w3 }+ f& w0 ?/ d
  5.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);- D6 @/ `; l, @, G. V$ X
  6.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    2 I  p5 r" y5 Z! c
  7.                 }' p  Q# }4 M" m5 A# r- l/ {
  8.                 2 T, q# D. t) i; X- J" J
  9.                 //B28 E7 f+ _1 n) l3 ~
  10.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET)
    ) c! J2 ^! b" U5 L
  11.                 {5 l, o/ B' P) m$ h" K# r2 T- {& I
  12.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET);% l" C/ K5 p( t7 C
  13.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);% L, L( M" [, e/ d, ~
  14.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    % J0 o" v, i6 C5 D( W( b* o
  15.                 }3 }' ]9 s% E" X) J- O+ r
  16. //B3
    9 {& ]' _6 b' a
  17.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET)- o+ W# n# K; t
  18.                 {) |- a, p  f" E; S2 a
  19.                         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12 | GPIO_PIN_13, GPIO_PIN_RESET);
    2 v& u$ i. f: l* `4 z4 s  x
  20.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    . B/ J  Z, t. [/ l( R
  21.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);* B$ ~8 n4 b+ ~# s& i  y/ h
  22.                 }
    7 C3 O4 S/ ^% k+ T
  23.                 //B4
    4 f) X9 L1 l; l8 `9 c
  24.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)
    # k% P+ Q) E7 i# f" x9 x& `6 y
  25.                 {
    + W" E7 V, l; w6 L. q2 p  S' a
  26.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_RESET);
    3 n+ `) D  I2 Y% b2 i
  27.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);! m7 U" `7 h! y; f0 ^
  28.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);8 V- K% O9 K( ^
  29.                 }   
复制代码

) ^/ @- a9 n6 a* m' Z            / q3 |1 ?3 E. c  t( P

! j2 D9 h' {4 F# L+ t
: r* E4 r9 H& L# f( D4 Z- ?9 _4 ^% N- Y
收藏 评论0 发布时间:2021-12-8 21:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版