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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 21:00
1.按键电路原理图
: a) E, k, D3 S( {5 B$ ~- d7 D9 q' M5 U
20210424110359377.png

  o1 A. s7 D& M4 B* _; \: c
9 M. Q* R$ E) P0 S7 t2.使用按键控制LED亮灭
6 u* K- r+ P# y) ?
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);% _0 z4 ?& _: l
  2. //读取pin的状态值,然后返回
复制代码
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
    $ ]7 ~; N7 e2 i; Z0 G: z
  2. {; I7 \; r% w6 [) i! T2 ^7 t3 t
  3.   GPIO_PinState bitstatus;$ p0 Q5 @6 R3 [0 K; \

  4. 5 z* [  ]( W0 `$ ~+ v0 {
  5.   /* Check the parameters */
    7 |2 k3 Y( C# G
  6.   assert_param(IS_GPIO_PIN(GPIO_Pin));' o0 H; G9 ~7 r. w

  7. 2 u+ X" A, `9 b
  8.   if ((GPIOx->IDR & GPIO_Pin) != 0x00U)
    $ A. z; b- ~( t+ f7 R' |
  9.   {
    9 k: B1 G6 `$ ~- e) O1 D
  10.     bitstatus = GPIO_PIN_SET;3 _0 X# b/ N4 V- N$ _! d
  11.   }
    / R! ?/ D% N1 U6 A
  12.   else( c. C8 s$ w/ y) f2 C# i2 Z: \
  13.   {4 M" v" q' j& |1 E2 Y5 h1 h( A
  14.     bitstatus = GPIO_PIN_RESET;% x8 d1 V* J8 ]9 E& D4 L1 Y2 _# ]
  15.   }
    # N) C6 X/ c: |3 O3 g
  16.   return bitstatus;! d+ O+ J2 w! ?
  17. }
    ( V0 V9 N8 S$ ?5 ^8 ]" l. Q
复制代码

+ z/ X, r# }* Y- O$ s# U5 L" u当配置为GPIO_MODE_OUTPUT_PP时,使用HAL_GPIO_ReadPin()可以正确读取出这个pin的状态值;
/ f8 H; |: L" I0 q2 `当配置为GPIO_MODE_OUTPUT_OD时,使用HAL_GPIO_ReadPin()是读取不到这个pin的状态值的,无论这个pin设置为SET还是reset,读取出来都是reset的状态;8 X9 P0 y9 s0 z4 A
  1.                 //B15 Z4 e9 y. r9 K5 G
  2.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET)) a- U/ C7 |3 e1 d
  3.                 {
    % ^% `3 L1 Q. L  D
  4.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);0 w9 p1 d! U) U
  5.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    - ~6 F5 H7 z6 Y) `
  6.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    & Z" ~* ]) }! Z% f0 d
  7.                 }
    , l) z( f4 ?1 V
  8.                 ' S9 l% ^; j( r' S2 m# C2 ]
  9.                 //B20 B4 X; Z" @1 }* h) N
  10.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET)
    0 d( ~) L  ?0 v
  11.                 {
    0 D$ c: O: Z: _4 M; B4 i4 ~2 B; N
  12.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET);
    * c$ m% M( }- V# x. ~* [
  13.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    - d+ X' y  b  S3 g5 Y( p
  14.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    9 Z$ |! ^; ~; s  M' ~
  15.                 }9 W9 Q6 @# B: \; W) b
  16. //B3
    " V2 L5 n% n- E, y" v  C6 `+ ^9 h$ y. e; j
  17.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET)7 }( E( Z  ?/ r
  18.                 {' ^  |4 J" z' y+ x8 @
  19.                         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12 | GPIO_PIN_13, GPIO_PIN_RESET);. b: J% Y, b- z9 @- u5 l+ f* P
  20.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);& N+ e7 u- R  e- t1 r0 c
  21.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    * H+ {- E9 P; s' C6 t
  22.                 }
    * P& \( ]) M, j% E' W
  23.                 //B4) n$ z& J( ^4 L
  24.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)' ^8 V2 |: k6 S- P  k! d& V
  25.                 {
    1 p5 X8 `4 L1 M* y
  26.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_RESET);
    & Z1 [/ l/ t1 Q% [5 g
  27.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    - y6 ?3 {8 p1 e* k, E$ n
  28.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    $ J# ~2 C+ W/ N6 I7 r& |5 t  H& C3 o
  29.                 }   
复制代码
: ?3 A8 P& Y) {+ f0 W4 B
            7 I* M; I% e5 ]; Y6 @, Y# R
& M) Z6 T" ~/ F1 ]/ T% w0 q0 T0 V
$ U2 k6 @  }* o" p+ s
收藏 评论0 发布时间:2021-12-8 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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