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

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

[复制链接]
y369369 发布时间:2021-4-16 14:01
2 \* }' ^" Z: `+ R
    硬件环境采用STM8SF103,电压为3.3V。电路需要注意的是STM8SF103这系列的IO作为输入口时只能是上拉输入和悬浮输入,虽然是弱上拉,在VCC为3.3V电压时,仍然能够被拉升至3.0V左右。
    所以按键检测电路IO口一端需要接地,而不是外接上拉。悬浮方式下IO仍然会有0.89V左右电压,读取对应的IO寄存器IDR,仍然处于逻辑高电平状态。
1.1.jpg
    软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下:
  1. //初始化只需要设置IO口模式即可。
    $ n$ O! D2 e( y/ T& X* U0 T
  2. GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT);//上拉输入,不产生中断! Y; a& j& H9 [  w4 _8 U: R& i
  3. //按键检测部分+ U! N. d) i2 w; N
  4. /*
    0 v- P% u# Y0 x1 e/ f0 V- r
  5. #defineKEY10- o& s' S  ]  p& z+ H
  6. #defineKEY1_PORT(GPIOD)
    / d0 Z0 G. B: E  s# s; N
  7. #defineKEY1_PIN(GPIO_PIN_4)
    ' o  |/ g2 u$ R7 G
  8. #defineKEY216 c% L; ?2 _" ]3 @' P5 Q
  9. #defineKEY2_PORT(GPIOC)
    ! x" k7 w' h8 g  @/ o, X9 q6 M
  10. #defineKEY2_PIN(GPIO_PIN_1)  ?4 k8 }* C2 O
  11. */
    9 f1 I; w& [& M! c
  12. u8CheckKey(u8key)
    " x/ k, N4 V! T1 c, U
  13. {
    ! P2 l; M; ?& s  O% p+ M1 W6 ~5 X
  14. if(key==KEY1)6 m* ?8 T9 B- A7 n0 e
  15. {
    9 A6 ]6 k* V4 a
  16. if(KEY1_PORT->IDR&KEY1_PIN)//检测到有按键了,IO口电压会被拉低
    6 s. l7 @: @" [5 Q4 }' p. p
  17. {3 G/ ~/ J  M! i
  18. delay_5ms();2 n$ |4 o+ n3 y8 Z
  19. if(KEY1_PORT->IDR&KEY1_PIN)//仍然存在低电平
    - z- W( }( N. g* f! H9 [
  20. {8 g/ O3 i6 F) O0 u0 ?  ~; ?
  21. while(!(KEY1_PORT->IDR&KEY1_PIN));//等待放开1 W8 ^( q! G7 U/ {5 X2 n3 a5 V  h
  22. returnKEY1;! e+ B- U6 q+ O5 {/ ?7 i0 N
  23. }, h6 c% }9 R( o) z% a
  24. }
    # j0 c. v- ]/ {: Z: \6 `! ?+ s
  25. return0;
    ; z, b' J% e+ @. w( c0 u# p
  26. }elseif(key==KEY2)) A0 L5 I4 ]% G+ n! E
  27. {
    ; m" f0 J5 ]# h1 \( _4 C
  28. if(!(KEY2_PORT->IDR&KEY2_PIN))//检测到有按键了" L+ v! Y: g4 N& k- h% I' Q
  29. {
    3 J$ E$ Q6 D5 c
  30. delay_5ms();$ ?% h2 h: ]- ~5 Y8 L
  31. if(!(KEY2_PORT->IDR&KEY2_PIN))//仍然存在低电平0 M) [- \6 b; C# _5 h" B7 a8 B
  32. {) f2 \" m8 K, y  t% a8 u& t
  33. while(KEY2_PORT->IDR&KEY2_PIN);//等待放开3 h& E! n5 K8 V9 C0 ]& X
  34. returnKEY2;* ^* C4 b4 T* z' o* w
  35. }: T; V0 z; ~" l0 v% j; {
  36. }
    & y" J" j+ y; o, a1 P
  37. return0;
    6 s! F, }% W1 _3 q1 {  @7 p
  38. }6 [/ c( K- F! T0 ]# w5 K0 ?
  39. return0;- l; h  {1 `' C- D
  40. }
复制代码
* a! f7 g( x7 T* f  x9 F7 z5 \; _
    总结一下,硬件电路将按键IO口的一端接地。软件配置不能使用悬浮输入方式,这种方式电压可能会不稳定。
文章出处: STM32嵌入式开发

, Y) R2 z) X: \( _  p& c
收藏 评论0 发布时间:2021-4-16 14:01

举报

0个回答

所属标签

相似技术帖

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