再发一种基于stm32的4X4矩阵键盘定时器扫描消抖法,彻底告别delay函数! .

本文介绍了一种使用STM32的4X4矩阵键盘定时器扫描消抖方法,通过比较不同时间点的扫描值来判断按键是否稳定按下,从而避免了使用delay函数。程序通过定时器中断每10ms扫描一次,经过多次比较确认按键状态,提高了扫描效率。
摘要由CSDN通过智能技术生成

        本人今天又换种思路写了个关于stm32的4X4矩阵键盘定时器扫描消抖法的算法程序,同样是采用的效率较高的翻转法,已通过测试,希望大家喜欢!大概思路为:将端口的第N次扫描值和第(N-1)次的扫描值进行比较,若相等则某个变量自增1次,否则将其清0,当此变量自增的值达到某个值时,则认为按键确实是被按下了,然后再进行后续的行和列的查找工作,最终确定是哪个按键被按下了!注:本程序的定时器中断扫描周期为10ms,同上次本矩阵键盘是采用的PB口的低8位。这个程序只是表达了思路,写得很粗糙,大家可以自行改进。代码如下:

s8 scan_MatrixKey(void)
{
    #define PORT GPIOB->IDR
    u8 column;
    u8 row;
    u8 tmp;
    static u8 j;
    static u8 x;
    static u8 i;
    s8 MatrixKey_value = 20; 
   
    //低8位为推挽输出
    GPIOB->CRL &= 0X00000000;
    GPIOB->CRL |= 0X33333333;
    //初值:低4位为低,次低4位为高
    GPIOB->ODR &= 0XFF00;
    GPIOB->ODR |= 0X00F0;
    //次低4位为上拉输入
    GPIOB->CRL &&

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值