stm32 薄膜键盘原理_stm32F4----薄膜4*4矩阵键盘读取(七)

这篇博客详细介绍了如何使用STM32F4对4x4薄膜键盘进行矩阵扫描,包括键值表、初始化配置和扫描函数。通过设置行和列的GPIO,实现了键盘的读取,并给出了关键代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

买了个矩阵键盘,原理图如下:

左边的为行,右边的为列,扫描的原理大概如下:行为输出,列为输入。先让第一行为0,其他行为高,读取列的电平。

key.c如下:#include "key.h"

#include "delay.h"

//键值表

/*

1:0x01    2:0x02    3:0x03    A:0x04

4:0x05    5:0x06    6:0x07    B:0x08

7:0x09    8:0x0A    9:0x0B    C:0x0C

*:0x0D    0:0x0E    #:0x0F    D:0x10

*/

uint8_t keyNum = 0x00;   //键值

void  keyInit(void)

{

GPIO_InitTypeDef   GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);

//key row1  output

GPIO_InitStructure.GPIO_Pin  =  KEY_ROW1_PIN;

GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_Speed=  GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_OType=  GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd =  GPIO_PuPd_UP;

GPIO_Init(KEY_ROW1_PORT,&GPIO_InitStructure);

//key row2  output

GPIO_InitStructure.GPIO_Pin  =  KEY_ROW2_PIN;

GPIO_Init(KEY_ROW2_PORT,&GPIO_InitStructure);

//key row3  output

GPIO_InitStructure.GPIO_Pin  =  KEY_ROW3_PIN;

GPIO_Init(KEY_ROW3_PORT,&GPIO_InitStructure);

//key row4  output

GPIO_InitStructure.GPIO_Pin  =  KEY_ROW4_PIN;

GPIO_Init(KEY_ROW4_PORT,&GPIO_InitStructure);

//key col1  input

GPIO_InitStructure.GPIO_Pin  =  KEY_COL1_PIN;

GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_IN;

GPIO_InitStructure.GPIO_Speed=  GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_PuPd =  GPIO_PuPd_UP;

GPIO_Init(KEY_COL1_PORT,&GPIO_InitStructure);

//key col2  input

GPIO_InitStructure.GPIO_Pin  =  KEY_COL2_PIN;

GPIO_Init(KEY_COL2_PORT,&GPIO_InitStructure);

//key col3  input

GPIO_InitStructure.GPIO_Pin  =  KEY_COL3_PIN;

GPIO_Init(KEY_COL3_PORT,&GPIO_InitStructure);

//key col4  input

GPIO_InitStructure.GPIO_Pin  =  KEY_COL4_PIN;

GPIO_Init(KEY_COL4_P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值