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

【经验分享】stm32矩阵键盘(中断模式)

[复制链接]
STMCU小助手 发布时间:2022-5-19 10:52
在搞定矩阵键盘的扫描模式以后,我就开始想用中断的方式来搞定矩阵键盘,通过中断的方式来搞定矩阵键盘非常方便,也不会占用太多的机时,扫描模式的文章在我另一个博客中,可以根据个人情况来选择合适的方式。
* Y( A( z% J6 G9 r' K% D, P$ _* k, L
我选择的是3*4的矩阵键盘,具体的实物图如下所示5 `4 v- Y0 c* W6 S6 b

2 h# z( I  j9 r% {+ D APJ_0Y7]44EC8TKF@7}{0F1.png
& f3 j+ G) e- _% b
! F5 G6 @+ [+ a9 W矩阵键盘是4行3列示意图如图所示2 s) |* F' g9 b" j* F* Z: y+ B
. z! ~# R7 q6 \/ }
~C1N)@6S[`M6}ID6S}FH8.png 6 L5 M& S$ }1 r9 J
, U$ ~8 S$ L8 W. p+ I
采用中断方式来进行检测按键具体的思想就是通过按键先来触发中断,如果中断被触发再来进行行或者列的扫描来确定是哪个具体的按键被按下,这样可以节省CPU的机时,也可以更有效率。( U5 r1 z7 S3 J" J2 I
( ~8 V, ~& I% q$ ]" \* I! x
我的代码就是采用这种方法。首先是将行的引脚都设置为上拉输入模式,并开启这些引脚的中断,将列的三个引脚设置为推挽输出模式,并将引脚拉低为低电平,这样如果有按键按下,就会触发四个行引脚的中断,来判断具体是哪一行被按下。$ `2 `5 y: @! c' c, Y6 x; a
3 {& |; k2 R" z! l7 q4 [' D
其次,如果检测到是哪一行后,就立即进入列扫描模式,将四个行引脚设置为推挽输出模式,并将引脚拉高设置为高电平,将三个列引脚设置为下拉输入模式,这样通过列扫描就可以进行确定到哪个键盘按下。
$ D% {; o2 @- P  Z9 @; |* x- g# @$ J/ E1 k
具体实现如下图所示8 ~) x; [! p! r0 _; g9 N

: ~6 H# m4 E( d3 P6 Y4 a {TB`2F$J}S(6`2(~}}})90J.png ( Y4 _$ ]! X& d% S$ a  v! `

) e/ J! g  p0 c5 Z0 {按下按键4
% L1 B+ a  o! H$ X$ b1 [7 H% x5 Y% Z
5AS3M09X379RMH3KEX]~KA3.png
/ ?, x0 R8 o3 f8 C6 W1 ^
# e  c" R6 g- }按下按键9# @& A+ N9 ?. m" L) J6 k" ?
6 r, o7 L1 B3 l  A3 a6 N
具体编程思路如下
& a6 n  M7 @9 U$ E$ K& Q [B7ER][XD0]IKPET(]91ZZI.png ( K" T- h6 d" [3 W
8 f. h1 W2 k1 B6 V" B  n

$ E3 a+ t6 ~' ?  U0 V4 {. m9 ?) Z9 t, A6 D) l# j- N

; z6 G. q+ ?" Q  L( x3 Q, J* v' L
赞 收藏 评论0 发布时间:2022-5-19 10:52

举报

0个回答

所属标签

相似技术帖

官网相关资源

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