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

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

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

( {6 C' L3 j+ ^4 t2 |. L/ X6 Q
微信图片_20220626143057.jpg

" p/ a) k5 h  x: h9 A) y
    软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下:
  1. //初始化只需要设置IO口模式即可。1 i7 c3 H+ c9 O* a3 Y" S2 q
  2. GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT);//上拉输入,不产生中断: `: ?4 F' m; L$ G
  3. //按键检测部分
      l, S/ f0 `/ Z3 `
  4. /*1 {7 j) U5 E5 T8 m# Q
  5. #defineKEY10
    & C% x: ~+ x1 N1 |( H0 d+ n# w, A
  6. #defineKEY1_PORT(GPIOD)
    5 C% c/ k0 K: N9 b5 C$ V
  7. #defineKEY1_PIN(GPIO_PIN_4)! V/ y2 _* m' R& p$ k: J
  8. #defineKEY218 Z6 z1 a) J7 N7 N/ ]7 [  }
  9. #defineKEY2_PORT(GPIOC)
    2 `+ t: p# m9 B% d% g; M  l5 _! u8 \
  10. #defineKEY2_PIN(GPIO_PIN_1)
    " n/ V! P. X, u  e! |' b! ?
  11. */
    8 Q  J, D8 K0 `. q
  12. u8CheckKey(u8key); H; |$ X- p# j  z5 [8 Q* |! ?6 [
  13. {
    + y1 g  H) i0 P9 t4 u
  14. if(key==KEY1)% S7 |4 ^/ v" R) k2 t
  15. {8 X; Q0 ^1 e9 u& X
  16. if(KEY1_PORT->IDR&KEY1_PIN)//检测到有按键了,IO口电压会被拉低
    8 Z! T- Q- Q; m" ?1 i
  17. {; O6 J" u! p) P
  18. delay_5ms();
    * P& Y5 l& W" T( i
  19. if(KEY1_PORT->IDR&KEY1_PIN)//仍然存在低电平
    9 `' h7 E! A7 k1 t) i1 p& a
  20. {0 J9 {+ c+ z; H9 f$ ]5 N- V
  21. while(!(KEY1_PORT->IDR&KEY1_PIN));//等待放开
      [* `$ E& T1 M+ L6 r
  22. returnKEY1;8 T" G2 X: g- g0 E# B
  23. }
    2 C( q* u. J' w% |' x- s5 I
  24. }
    1 U9 U- S3 j- m5 C2 g# \- L
  25. return0;* D! l9 M' I( ]4 I# R
  26. }elseif(key==KEY2)% `% K& X% W8 G% i! b8 V$ o- c; r
  27. {8 L2 s" I+ \7 l' c
  28. if(!(KEY2_PORT->IDR&KEY2_PIN))//检测到有按键了9 ~1 y* s- F( u* e: [1 w
  29. {: l9 x3 d4 t0 ^2 d
  30. delay_5ms();2 _+ L% \* F# |3 _" Y) ?, G
  31. if(!(KEY2_PORT->IDR&KEY2_PIN))//仍然存在低电平$ _: e& t& M2 [1 t
  32. {
    # A$ A2 q$ F. D. h, ^2 V& x5 u8 Y
  33. while(KEY2_PORT->IDR&KEY2_PIN);//等待放开( V2 b( m5 a% E0 E
  34. returnKEY2;
    + U: U* _. Z! A* |. K& A) j
  35. }; L  L# A& l0 C3 {7 W
  36. }
    & \' R# T% D2 l" M  o! t4 l
  37. return0;1 z9 `5 J  ^5 H$ U# t
  38. }
    + u4 y* [9 j  x( M) V, m! F8 ^
  39. return0;
    $ V8 H6 C! C# G$ o
  40. }
复制代码
; V& {7 M& ^3 h7 E. b1 X, ]6 U
    总结一下,硬件电路将按键IO口的一端接地。软件配置不能使用悬浮输入方式,这种方式电压可能会不稳定。

3 X4 m' G1 @; D# S. G* u: m
赞 收藏 评论0 发布时间:2022-6-26 14:31

举报

0个回答

所属标签

相似技术帖

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