STMCU小助手
发布时间:2022-5-19 10:52
|
在搞定矩阵键盘的扫描模式以后,我就开始想用中断的方式来搞定矩阵键盘,通过中断的方式来搞定矩阵键盘非常方便,也不会占用太多的机时,扫描模式的文章在我另一个博客中,可以根据个人情况来选择合适的方式。 ' K% D, P$ _* k, L 我选择的是3*4的矩阵键盘,具体的实物图如下所示5 `4 v- Y0 c* W6 S6 b
矩阵键盘是4行3列示意图如图所示2 s) |* F' g9 b" j* F* Z: y+ B . z! ~# R7 q6 \/ }
, 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 其次,如果检测到是哪一行后,就立即进入列扫描模式,将四个行引脚设置为推挽输出模式,并将引脚拉高设置为高电平,将三个列引脚设置为下拉输入模式,这样通过列扫描就可以进行确定到哪个键盘按下。 * x- g# @$ J/ E1 k 具体实现如下图所示8 ~) x; [! p! r0 _; g9 N
按下按键4 $ b1 [7 H% x5 Y% Z
按下按键9# @& A+ N9 ?. m" L) J6 k" ? 6 r, o7 L1 B3 l A3 a6 N 具体编程思路如下
8 f. h1 W2 k1 B6 V" B n 4 {. m9 ?) Z9 t, A6 D) l# j- N ( x3 Q, J* v' L |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版