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

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

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

, [' ~$ O" J8 C3 p- V& j
微信图片_20220626143057.jpg

! o' W3 _  N0 C  g- `2 z
    软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下:
  1. //初始化只需要设置IO口模式即可。
    " L, T/ P" e8 ~) W8 B
  2. GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT);//上拉输入,不产生中断
    + G, d# z" ?9 o
  3. //按键检测部分
    ; Z) H! q8 m2 q& Z  q: T% d0 J" }
  4. /*
    ' \: m, B6 o( o- f3 U" O* p- B
  5. #defineKEY10
    . S6 G1 R" A1 M- [2 J( |
  6. #defineKEY1_PORT(GPIOD), F; Q. _& r) y3 a/ F
  7. #defineKEY1_PIN(GPIO_PIN_4)6 W. f9 m  h3 O- [% g! y( y
  8. #defineKEY21
    ; I8 c7 ?2 Q! C( d  f& E3 P
  9. #defineKEY2_PORT(GPIOC)
    * y1 p. a# Q: g. L
  10. #defineKEY2_PIN(GPIO_PIN_1)2 _4 N# @! u% U, a& V. \4 m" U. n
  11. */
    + E" @  _) m, f: f$ D* E7 e( a: T
  12. u8CheckKey(u8key)8 {$ _# z$ e& c5 d8 B  {9 k
  13. {" U" A' p* w( z2 S
  14. if(key==KEY1)  }# i0 B5 T0 K
  15. {
    ; y+ P3 s2 {$ @2 s  |. Q
  16. if(KEY1_PORT->IDR&KEY1_PIN)//检测到有按键了,IO口电压会被拉低- \% G, U7 q7 w; s+ }: X
  17. {5 n, q% w0 G) v7 a1 J: y) l
  18. delay_5ms();
    1 V8 c1 A/ |# @+ v; K! Z1 Q* z  \2 {
  19. if(KEY1_PORT->IDR&KEY1_PIN)//仍然存在低电平
    ) r6 e6 b5 N) B5 g0 }# j9 f9 J
  20. {
    1 \# K9 n3 A: N# W; s
  21. while(!(KEY1_PORT->IDR&KEY1_PIN));//等待放开
    # W, r1 u" n5 G' O2 p
  22. returnKEY1;
    7 \, }9 {+ ?) x
  23. }- p% J* g2 z( n% D* a2 o! k6 E
  24. }( Q: U+ c1 R% M- X6 C
  25. return0;
    7 F, f% C* k$ s- w# h% Q3 v
  26. }elseif(key==KEY2)' c/ r4 c: f4 c: I. {4 H; U' H
  27. {
    3 d  F) N1 T+ q+ C4 p! ~
  28. if(!(KEY2_PORT->IDR&KEY2_PIN))//检测到有按键了9 E5 k+ h2 q% e+ E" N
  29. {7 ^3 P+ {) ?% v* u; O5 `
  30. delay_5ms();) I2 @1 y' W0 S+ F3 y; O( D
  31. if(!(KEY2_PORT->IDR&KEY2_PIN))//仍然存在低电平
    6 H- G, f* o. L3 u
  32. {
      R# H- O( |* E) v, ?) J7 ~
  33. while(KEY2_PORT->IDR&KEY2_PIN);//等待放开- c+ d$ z5 Q8 E6 L% F; H  Y" Z
  34. returnKEY2;  F: E+ t3 n% L  b
  35. }" H" J! N4 Z- g+ f' {
  36. }
    ( J. j" K$ n  H! m/ ?* i8 r! Q
  37. return0;
    / W7 D1 e# K6 j% B; H! k5 Q
  38. }
    1 [  P" a4 I9 h! u
  39. return0;+ Q, O/ s2 z+ k- v; s2 A3 ^3 }
  40. }
复制代码
! @' l, g0 C0 Y. S  z; E8 r% i7 m
    总结一下,硬件电路将按键IO口的一端接地。软件配置不能使用悬浮输入方式,这种方式电压可能会不稳定。
/ e( I" I/ Z: ~" v7 S8 y! v& k
收藏 评论0 发布时间:2022-6-26 14:31

举报

0个回答

所属标签

相似技术帖

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