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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 21:00
1.按键电路原理图
3 D6 q9 H+ e) z* N& d+ u4 S6 x4 o' r4 S0 b
20210424110359377.png
. ~$ ?& a) U' f: r+ U4 \1 O
. D& W2 j0 m& B9 X1 E% ?1 r
2.使用按键控制LED亮灭
# ^2 K  |% o* P) O8 r9 e
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    # y3 c$ X( B1 n( t1 [5 f
  2. //读取pin的状态值,然后返回
复制代码
  1. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
    " U( O3 w  x+ E5 z" P2 f
  2. {
    * C6 T. t7 M3 l! `6 y, S% i: q
  3.   GPIO_PinState bitstatus;
    : u0 c/ F6 {/ j; v' d( I. H
  4. # `; a# w# q4 c- [
  5.   /* Check the parameters */
    2 l( w/ {6 ?9 b, {9 T" X# k
  6.   assert_param(IS_GPIO_PIN(GPIO_Pin));0 H, s; T* b6 s) B

  7. . c) U1 I1 S8 c+ t& [
  8.   if ((GPIOx->IDR & GPIO_Pin) != 0x00U); n: ]) B% K$ a( [
  9.   {
    7 g  F. {2 b7 g2 x1 T' V
  10.     bitstatus = GPIO_PIN_SET;
    8 t4 O* z9 v) p0 E
  11.   }4 n& ]3 j. r' p  s7 ~8 M
  12.   else
    ; r5 A+ Z0 W% b" X. ~
  13.   {
    ) u) p' ]+ T. o" R  C
  14.     bitstatus = GPIO_PIN_RESET;! I& |, A0 K/ ^& Y
  15.   }
    % E' ]3 r  e8 R- g. K* B/ J& O
  16.   return bitstatus;
    5 k$ w1 V. I0 U, ]
  17. }
    $ C! f5 A* N8 v& W0 k6 Z/ l
复制代码

) b( h( s* e+ K+ J当配置为GPIO_MODE_OUTPUT_PP时,使用HAL_GPIO_ReadPin()可以正确读取出这个pin的状态值;. l; \) p: c( k) \
当配置为GPIO_MODE_OUTPUT_OD时,使用HAL_GPIO_ReadPin()是读取不到这个pin的状态值的,无论这个pin设置为SET还是reset,读取出来都是reset的状态;
3 J% ~4 F+ B; ^9 a0 @& o
  1.                 //B19 G1 o: g1 J. V* ?3 |/ _* e
  2.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET)
    4 T/ R! J! K' v2 l" |6 S
  3.                 {9 ]0 k  d' {7 A3 t1 M* ]7 W
  4.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);/ d5 T6 b  C( l7 D
  5.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);- o& Q9 a3 O" U' g) F
  6.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);1 \4 M, j* N1 w( D8 s- b1 O
  7.                 }& h. P6 {* c! s6 t
  8.                 * i& c& n6 B$ d( @6 ~! V, {
  9.                 //B27 J# l/ Z% N- F% h7 Q; `& m& s
  10.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET)
    5 T( K- ~/ O/ K5 A+ S0 U) D
  11.                 {
    - f* k  M8 W% s4 ]
  12.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET);8 Y. p  \+ `3 L6 e0 _- k8 q+ d  H
  13.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    % p6 \% Q) c' k8 \; f. B
  14.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);& c+ ~1 ]  x; Q7 S. ~
  15.                 }
    6 G& c9 J, ?; i* }9 B) u) m1 ~
  16. //B3' p3 V, e3 h4 I3 O& i, p6 i& W
  17.                 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET)  S4 Q) Z0 Q  j# _+ r  U7 n2 b
  18.                 {% N$ ~9 a+ J' D3 y" ?2 l/ }0 ^1 R
  19.                         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12 | GPIO_PIN_13, GPIO_PIN_RESET);( N% R. `& g- v) S3 \
  20.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    ' X- o8 g4 ]5 o, a  T* v
  21.                         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    " Q8 ?2 U4 w5 Q+ j) p+ p1 `
  22.                 }
    * V% C' y) K2 E
  23.                 //B4/ I  I" @4 L2 b- _3 R/ ~; l% H
  24.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)4 E) e5 N4 v2 _. c- F4 Y6 |! ?
  25.                 {  ^! h& c8 j3 E) z
  26.                                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_RESET);
    , \5 K4 R4 p- `% N  f/ m% d$ ]
  27.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
    9 J( i/ K' V4 q+ O1 i* [4 X- F
  28.                                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
    3 `$ d' I' k- N
  29.                 }   
复制代码
, X9 `" C- u& V  t
            " E8 K/ }$ m3 z0 x
' v. e' }: R1 z! I+ H- Q( e

- w* h* P! o& O+ J: M( Q0 ^
收藏 评论0 发布时间:2021-12-8 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版