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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 21:00
1.按键电路原理图8 q9 [5 u5 N0 A
2 G- n- l6 o9 l' G/ a
20210424110359377.png

- x( r( q4 y4 u% }/ V- @! k0 l- w9 t
2.使用按键控制LED亮灭

/ ^* t) a7 d9 K& q& Y
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);4 p: j, x* m1 ^% f, X) B' W8 V
  2. //读取pin的状态值,然后返回
复制代码
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)6 e) f7 |# W! P( ^
  2. {% F) J# Q: n9 k9 R% j
  3.   GPIO_PinState bitstatus;  |! c- K+ A5 o, `
  4. 9 u+ h) S- D! _; u" c
  5.   /* Check the parameters */2 V( I/ n2 C- Y9 W1 j
  6.   assert_param(IS_GPIO_PIN(GPIO_Pin));
    9 _# i0 s( ?1 D7 C' o; w; }
  7. . r4 x$ \8 a; a4 l
  8.   if ((GPIOx->IDR & GPIO_Pin) != 0x00U)
    " N4 u# e) {0 q0 }0 Z
  9.   {. n, S8 g2 T! m* ~( J
  10.     bitstatus = GPIO_PIN_SET;$ P( ]( F% z; t; [2 l
  11.   }
    " t: z5 {0 o& e5 |
  12.   else6 z& Q. H4 V, _8 P
  13.   {8 M  o" j- m( o, E5 {4 X- \. Y
  14.     bitstatus = GPIO_PIN_RESET;, [$ V. Y& n% ^# T2 n( `; k, k
  15.   }: F2 J& N7 o8 u" T& ?, |! E
  16.   return bitstatus;
    6 L/ |- |4 d/ E
  17. }, B6 U2 A6 d7 x' r* M; K* Z' Y8 A
复制代码

6 i3 {) a& c# r. P. C当配置为GPIO_MODE_OUTPUT_PP时,使用HAL_GPIO_ReadPin()可以正确读取出这个pin的状态值;
- C# I' f' ?4 e# T当配置为GPIO_MODE_OUTPUT_OD时,使用HAL_GPIO_ReadPin()是读取不到这个pin的状态值的,无论这个pin设置为SET还是reset,读取出来都是reset的状态;+ L# j" {5 f! {4 T# f
  1.                 //B1. U2 ~3 Z# A  c; Y: _
  2.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET)
    : K% Z+ ^) e# T
  3.                 {
    9 D: q+ F1 r$ R1 D  {( a8 p
  4.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);
    $ v2 q; a! ~4 ]" e6 E
  5.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    % w2 [  B6 h) B; T% z$ \6 i
  6.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    + H& J( w) S# {6 s% F  d
  7.                 }' V; W" z7 D* \5 I. @# X
  8.                
    ! v* v( ?0 ~6 j: E7 }5 n2 w. Q' l) w$ B+ [
  9.                 //B2
    ' q! a+ A1 J- J
  10.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET)& {, U3 ?. L  P0 ~8 z
  11.                 {
    4 t' p+ \0 Y/ m, J. w  V& O
  12.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET);( c1 I- V/ v. ?( _; d
  13.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);: B. t# o- ]% r5 U5 U3 U9 i9 v/ S
  14.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);, \( ~/ q3 ?& J( c9 [8 J
  15.                 }
    ) p/ p  T8 W# {7 Q+ D$ g
  16. //B3
    / Z# o1 j+ G& S5 |
  17.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET)/ H6 j0 [9 W$ [; k8 \# O+ }
  18.                 {
    2 C: h( y+ r) Q+ I6 V
  19.                         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12 | GPIO_PIN_13, GPIO_PIN_RESET);+ b7 K6 s. z1 \
  20.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    - m" G# F2 `+ A' ^& D4 Q' Q
  21.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);& R" l/ t  m8 _& f& u: ]1 ]$ E
  22.                 }! }+ L1 x) Z% ]0 @9 C% R
  23.                 //B4
    4 P& f$ e& K3 b2 f! v+ \
  24.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)! n. ]. @7 Q. E
  25.                 {
    $ |: ?- d' `: H' y' f- a$ S% e
  26.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_RESET);
    ) s- [' Q, |) q1 P+ T9 x" R
  27.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);6 `4 J* W. |1 J' R9 F
  28.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);+ r" Z# M+ x- v! [: [+ `
  29.                 }   
复制代码

3 d, ~$ z$ r/ m3 _            
+ `$ }7 S& ?( L) B/ Y5 y, _/ |7 H* o% ]$ X' C3 w+ V; J+ M" o
6 n& o* v, o" f
赞 收藏 评论0 发布时间:2021-12-8 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版