经本人刻苦钻研,将51单片机上用的矩阵键盘扫描程序移植到了stm32上,同时也做了很大的改进,最大的改进莫过于消抖这块了。以前的消抖总是采用delay延时约10到20ms的时间,但这样会导致MCU在延时里空跑而造成主程序被搁置,显然,程序的实时性大打折扣,今天便在此让新手们别delay,从此走进一个崭新的扫描消抖世界!(本人也是新手——爱钻研的新手哈!^_^)
//stm32矩阵键盘翻转扫描法(PB口的低8位)
//将此矩阵键盘扫描程序放在定时器中断服务程序里
//每10ms进入一次中断服务程序
s8 scan_MatrixKey(void)
{
#define PORT GPIOB->IDR
u8 column;//列
u8 row;//行
u8 tmp;//临时变量
s8 MatrixKey_value = 20;//初始值不能为0~15
static u8 key_count = 0;//按键被中断扫描的次数
///IO口的配置/
//低8位为推挽输出
GPIOB->CRL &= 0X00000000;
GPIOB->CRL |= 0X33333333;
//初值:低4位为低,次低4位为高
GPIOB->ODR &= 0XFF00;
GPIOB->ODR |= 0X00F0;
//次低4位为上拉输入
GPIOB->CRL &