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

【经验分享】STM8单片机按键检测电路设计

[复制链接]
STMCU小助手 发布时间:2022-6-26 14:31
    硬件环境采用STM8SF103,电压为3.3V。电路需要注意的是STM8SF103这系列的IO作为输入口时只能是上拉输入和悬浮输入,虽然是弱上拉,在VCC为3.3V电压时,仍然能够被拉升至3.0V左右。
    所以按键检测电路IO口一端需要接地,而不是外接上拉。悬浮方式下IO仍然会有0.89V左右电压,读取对应的IO寄存器IDR,仍然处于逻辑高电平状态。

% |/ l3 `3 P7 [
微信图片_20220626143057.jpg
9 t' [& @8 D' b6 Q* n, I% Y
    软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下:
  1. //初始化只需要设置IO口模式即可。
    # }2 v4 N) M8 e+ S# K! r8 \
  2. GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT);//上拉输入,不产生中断
      m6 S' z! T- ?) }- m8 p7 y0 k1 I
  3. //按键检测部分
    # m1 C: Y. i5 o3 e) ^/ c
  4. /*5 _9 F6 r  s* P( u6 z
  5. #defineKEY10% C( r; U+ T0 ?
  6. #defineKEY1_PORT(GPIOD)4 k7 Z, p. H. x
  7. #defineKEY1_PIN(GPIO_PIN_4)1 e" z$ P9 b8 h; I' ]3 P
  8. #defineKEY21
    % m6 h8 K: `, f: F' T0 D' x3 R
  9. #defineKEY2_PORT(GPIOC)0 ^  B$ O# w) R- q5 x: O
  10. #defineKEY2_PIN(GPIO_PIN_1)
    $ q. Y0 n3 ]: E2 Y. O
  11. */
    . \6 t4 P9 c3 G1 ]% y
  12. u8CheckKey(u8key)
    # p0 B" v( P2 z( d
  13. {, S8 S0 P3 ]& T! p- x! G
  14. if(key==KEY1)
    5 w: c; j  p  j# a! u; u
  15. {- Z$ f6 V8 G" R( c; Q  d
  16. if(KEY1_PORT->IDR&KEY1_PIN)//检测到有按键了,IO口电压会被拉低, r. V; l$ H3 l# J2 L$ j
  17. {, V) N% V" [9 A5 ~
  18. delay_5ms();( ]$ K: R8 W& f0 I$ G% I' }$ L
  19. if(KEY1_PORT->IDR&KEY1_PIN)//仍然存在低电平" A# z" h4 ?; U+ N% L
  20. {
    ) o# r' L7 v, R9 O/ e! T
  21. while(!(KEY1_PORT->IDR&KEY1_PIN));//等待放开
    9 p. |9 Z% Z1 {5 ?
  22. returnKEY1;
    ! Q  n8 O! q. D7 J+ @/ z! ^
  23. }
    2 m7 Z' f. J0 E5 h' ~
  24. }1 ?3 y  M- Z% J
  25. return0;
    ' p4 C2 x6 N" V$ @4 i6 s
  26. }elseif(key==KEY2)
    : K) n: V4 Q. I5 h2 |" ]' R4 k
  27. {) |+ ^. ]8 I1 a; K( m  L- V
  28. if(!(KEY2_PORT->IDR&KEY2_PIN))//检测到有按键了% Q4 d. \7 h/ G' K! b$ y
  29. {. Z7 @* O/ x6 K8 D) R
  30. delay_5ms();
    . l% k1 |9 f' i! t
  31. if(!(KEY2_PORT->IDR&KEY2_PIN))//仍然存在低电平
    ' n5 `. {# k+ b+ s3 p
  32. {* g: }/ g2 T" ?0 i3 ]
  33. while(KEY2_PORT->IDR&KEY2_PIN);//等待放开. v* E0 [4 Y; i" j% |. m' o
  34. returnKEY2;
    1 @8 r; n. b+ |4 G+ g, [+ L
  35. }& N' \( S% q- C8 a6 b+ g
  36. }
    , B4 N- A* X7 z6 _% b/ u
  37. return0;# l% o2 m  C8 r7 y
  38. }
    0 S/ Y8 `$ {1 P1 c: F4 Q
  39. return0;
    0 K$ ^: @* I  k: r
  40. }
复制代码

9 h! P  _/ c- x% I' V2 e! |7 p7 P
    总结一下,硬件电路将按键IO口的一端接地。软件配置不能使用悬浮输入方式,这种方式电压可能会不稳定。

- P6 t: L4 V( ~1 v( L4 U% l- e
收藏 评论0 发布时间:2022-6-26 14:31

举报

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