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

STM8单片机——按键检测电路设计

[复制链接]
gaosmile 发布时间:2020-8-14 20:28
    硬件环境采用STM8SF103,电压为3.3V。电路需要注意的是STM8SF103这系列的IO作为输入口时只能是上拉输入和悬浮输入,虽然是弱上拉,在VCC为3.3V电压时,仍然能够被拉升至3.0V左右。
    所以按键检测电路IO口一端需要接地,而不是外接上拉。悬浮方式下IO仍然会有0.89V左右电压,读取对应的IO寄存器IDR,仍然处于逻辑高电平状态。
微信图片_20200814202716.jpg
    软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下:

  1. 4 L5 S9 f  x: ]) n  N% R+ v
  2. //初始化只需要设置IO口模式即可。, g* O; y! |4 ]& l* b' Y
  3. GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT);//上拉输入,不产生中断
    + s+ m- E" [7 x3 t+ c
  4. //按键检测部分9 `( V, c. m' _4 x' o  m
  5. /*
    $ @' s& T& L' Y2 N( r
  6. #defineKEY103 _" x% f6 i5 R- w8 o, w
  7. #defineKEY1_PORT(GPIOD). n/ G' z6 Q7 \! V2 b
  8. #defineKEY1_PIN(GPIO_PIN_4)
    6 a6 q! f( `# W6 D
  9. #defineKEY21
    . S2 q, Q( y3 n$ W% F6 F! u
  10. #defineKEY2_PORT(GPIOC)
    0 [4 c5 N& k3 j) M4 t
  11. #defineKEY2_PIN(GPIO_PIN_1)
      @( I2 O1 L' j7 s9 o+ P8 f$ f
  12. */
    - X- {5 Q7 B; H/ w9 l5 C
  13. u8CheckKey(u8key)
    * K, x1 w+ U9 U1 e+ L5 \( ?1 ^
  14. {
    * v* P5 O4 k9 G& D4 S+ q
  15. if(key==KEY1)- U; ~) K( V/ U/ Y- F" q9 a
  16. {
    ! }6 K( o; L& c$ F, C
  17. if(KEY1_PORT->IDR&KEY1_PIN)//检测到有按键了,IO口电压会被拉低1 e' Q+ ^4 b! X( [1 j, [
  18. {
    + M) I) ~1 Z" Q  F
  19. delay_5ms();
    : m/ t& Y% Q! m! t  s
  20. if(KEY1_PORT->IDR&KEY1_PIN)//仍然存在低电平( D2 _5 H0 S" A) R9 u$ o
  21. {
    , K2 {8 I& s5 N+ v) R1 T9 t2 {
  22. while(!(KEY1_PORT->IDR&KEY1_PIN));//等待放开
    ) m$ ^) N! S+ [' G
  23. returnKEY1;
    - J7 j, x; c9 N# p9 m  x
  24. }  @9 @, m2 S  \6 P; I& {! o
  25. }' Y! M# m* F( v5 H
  26. return0;% c* C! ^# h5 o3 e3 v# I. B; T' `
  27. }elseif(key==KEY2)* y+ ~4 H: |) E: f  Y
  28. {$ w6 Q+ ~5 `2 A; p6 J
  29. if(!(KEY2_PORT->IDR&KEY2_PIN))//检测到有按键了) l( q. p. r6 B3 r* y$ q$ a" X
  30. {( ], M2 c, [, O( c3 t+ f" ~0 L
  31. delay_5ms();$ b! g) H/ v5 P) |, d) \3 D% I
  32. if(!(KEY2_PORT->IDR&KEY2_PIN))//仍然存在低电平
    - C5 Y+ A- p& \/ W0 y
  33. {1 k1 N1 t; H5 G+ a4 Q7 h/ j% f
  34. while(KEY2_PORT->IDR&KEY2_PIN);//等待放开
    6 K" o) e3 R* F1 E2 j
  35. returnKEY2;: C) j* K2 r7 l
  36. }6 z3 q7 ^  \* u. W% ~+ }$ e
  37. }
    # S5 ^) y7 \% i- x1 O6 f6 Z
  38. return0;
      B& B  C  D: e. I
  39. }3 ]6 h; X' J: ~9 Q: p" }
  40. return0;3 _' B  d" f1 r  K( x
  41. }
复制代码
7 W8 @2 r  [6 r6 {" J* \
    总结一下,硬件电路将按键IO口的一端接地。软件配置不能使用悬浮输入方式,这种方式电压可能会不稳定。
2 i0 ]4 j. x) P5 d5 k2 K6 O4 j
赞 收藏 评论0 发布时间:2020-8-14 20:28

举报

0个回答

所属标签

相似技术帖

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