STM32F103——4*4矩阵扫描(极简事件扫描,非主延时)

发布者:不羁少年最新更新时间:2019-08-16 来源: eefocus关键字:STM32F103  4*4  矩阵扫描  事件扫描 手机看文章 扫描二维码
随时随地手机看文章

使用扫描事件获取键值,该模块极简


任意取用


#define Keyboard_Line_1         GPIO_Pin_0

#define Keyboard_Line_2          GPIO_Pin_1

#define Keyboard_Line_3 GPIO_Pin_2

#define Keyboard_Line_4 GPIO_Pin_3

#define Keyboard_Row_1 GPIO_Pin_4

#define Keyboard_Row_2 GPIO_Pin_5

#define Keyboard_Row_3 GPIO_Pin_6

#define Keyboard_Row_4 GPIO_Pin_7

#define IOPIN(x)                    ((uint16_t)(1<<(x)))

#define DEBOUNCE_CNT        5       //20ms  默认防抖时间

 

uint16_t KeyValue ;

 

uint8_t Delay_Count[16];

 

// 功能:设置IO为推挽输出

// 输入:port, pin按位(可为组合)

void IoDirOutput(GPIO_TypeDef* port, uint16_t pin)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Pin   = pin;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;

    GPIO_Init(port, &GPIO_InitStructure);

}

 

 

// 功能:设置IO为下拉输入

// 输入:port, pin按位(可为组合)

void IoDirInputPD(GPIO_TypeDef *port, uint16_t pin)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Pin   = pin;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPD;

    GPIO_Init(port, &GPIO_InitStructure);

}

 

void IoInit(void)

{

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD

   | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE);

IoDirOutput( GPIOE, Keyboard_Line_1 | Keyboard_Line_2 |Keyboard_Line_3 |Keyboard_Line_4);

 

IoDirInputPD(GPIOE, Keyboard_Line_1 | Keyboard_Line_2 | Keyboard_Line_3 | Keyboard_Line_4);

   

}

 

void IoDetectEvent(void)

{

  uint8_t i, j;

uint16_t buff_porte,porte;

        IoSetPin( GPIOE, Keyboard_Row_1 | Keyboard_Row_2 | Keyboard_Row_3 | Keyboard_Row_4);

        porte = IoRead(GPIOE);

for (i = 0; i =0 < 4; i++ ) //读取Line

{

if (porte &  IOPIN(i))

{

for (j = 4;j < 7 ; j++) //读取Row

{

IoClrPin( GPIOE,  Keyboard_Line_1 | Keyboard_Line_2 | Keyboard_Line_3 | Keyboard_Line_4);

 

 

IoSetPin( GPIOE, IOPIN(j));

buff_porte = IoRead(GPIOE);

 

if (buff_porte & IOPIN(i))

{

if (Delay_Count[i * 4 + (j - 3)] >= DEBOUNCE_CNT)   //去抖动小延时 = DEBOUNCE_CNT*4ms

{

Delay_Count[i * 4 + (j - 3)] = 0;

     KeyValue = i * 4 + (j - 3);//1~16

}

else

{

 

Delay_Count[i * 4 + (j - 3)] ++;

 

}

}

else

{

 

Delay_Count[i * 4 + (j - 3)] = 0;//清除误触计数

 

}

 

}

}

}

 

   

}


关键字:STM32F103  4*4  矩阵扫描  事件扫描 引用地址:STM32F103——4*4矩阵扫描(极简事件扫描,非主延时)

上一篇:ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示
下一篇:STM32 矩阵键盘通过串口输出

推荐阅读最新更新时间:2024-11-04 16:44

基于MC9S08SC4的汽车方向盘按键控制器技术
随着汽车在人们日常生活中的普及以及汽车电子在汽车应用领域价值不断地扩大,越来越多的舒适性能和“智能”应用被集成进车身电子的领域。飞思卡尔最新的汽车级8位微控制器MC9S08SC4便是本文所要介绍的主角,该款微控制器是业界使用广泛的飞思卡尔HCS08系列汽车级微控制器家族最新的成员,以其低成本、小封装但同时兼具高性能、高可靠性的特点,适用于众多汽车电子应用领域,例如:简单的灯光控制、按键控制、HVAC、LIN通信控制器、车内后视镜调光以及简单的继电器和马达控制。如果你正在为你的应用物色一颗高性能、低成本的汽车级微控制器,但又为电子模块成本和PCB面积的限制而苦恼,相信MC9S08SC4正是你要找的这颗芯片。 MC9S08SC4的
[嵌入式]
Redmi 10 2022通过FCC认证:仅支持4G,预计将近期亮相
Redmi 10 (2022) 和 Redmi 10 Prime (2022) 智能手机正在开发中,但从现在的情报来看将很快在海外推出。   这些机型已在各种认证平台上出现,包括印度尼西亚的 TKDN、欧洲的 EEC、SDPPI、TUV 和新加坡的 IMDA。现在,外媒发现型号为 22011119UY 的 Redmi 10 2022 已获得 FCC(美国联邦通信委员会)认证。   跟之前不同的是,此次认证清单还显示了该机部分硬件信息,预计这款手机可能会在 2022 年第一季度的某个时候亮相。   此外,该机在不同市场的变种机型还包括 21121119SG(G 即全球版),22011119UY 和 21121119VL,表明小
[手机便携]
Redmi 10 2022通过FCC认证:仅支持<font color='red'>4</font>G,预计将近期亮相
最完美的PAM4标准通信数据测试方案大全
eeworld网消息:随着对网络带宽需求的进一步提升,PAM4 正在成为这种需求的一个主要推动力。PAM(Pulse Amplitude Modula TI on:脉冲幅度调制)信号作为下一代数据中心做高速信号互连的一种热门信号传输技术,可以广泛应用于200G/400G接口的电信号或光信号传输。PAM信号为 4 种电平脉冲幅度调制,可以显示比传统数字信号更多的bit逻辑信息。由于存在每符号 2 位、4 符号电平和每 UI 3 眼图,PAM4 展现出许多新的测量和测试挑战。 PAM4 与传统数字信号有何不同? 传统的数字信号最多采用的是NRZ(Non-Return-to-Zero)信号,即采用高、低两种信号电平来表示要传输的数字
[测试测量]
追上USB4 2.0标准:Intel展示80Gbps的雷电新接口
前不久USB-IF官方公布了最新的USB4 2.0标准,速率最高提升到了80Gbps,是USB4的两倍,也是雷电4接口的2倍,但线缆需要升级为有源的。现在Intel也不甘示弱,同样展示了80Gbps的雷电新接口。据TH网站报道,Intel在以色列的活动上展示了新的雷电标准能力,速率达到了80Gbps,通过2个雷电通道实现,每个通道40Gbps,这个速度是目前雷电4的2倍。 (来自:Tom's Hardware) 不过Intel现在展示的也就是这些了,详细的技术介绍要等未来分享,看样子Intel就是为了应对USB4 2.0标准发布而精心准备的,也就是炫耀下技术。 这个雷电接口也没有命名,按照惯例可能会叫做雷电5
[手机便携]
追上USB<font color='red'>4</font> 2.0标准:Intel展示80Gbps的雷电新接口
联发科再上调全年智能机晶片总量达1.1亿套 Q4 TD动能最强
    IC设计联发科(2454-TW)今(29)日召开法说会,受到中国大陆智慧型手机市场加温带动,联发科再度上调全年智慧型手机晶片出货总量,估达1.1亿套,全年智慧型手机晶片加上功能型手机晶片总量约5-5.2亿套之间,仍较去年下滑。 总经理谢清江表示,第 3 季智慧型手机晶片出货量高于预期,达3500-4000万套之间,第 4 季估可达4000万套以上,较第 3 季持平或增加 1 成之多,带动全年智慧型手机晶片出货总量达1.1亿套。 至于明年总量,谢清江指出下次法说会才会有更明确的看法,不过他仍看好智慧型手机晶片市场发展,认为功能手机的转换潮将持续延续下去,而今年第 4 季智慧型手机晶片已快速转换成双核心是主流,明年四核心晶片将
[手机便携]
武汉家庭宽带可免费提速至4
    继中国电信启动“宽带中国 光网城市”工程后,昨日记者从武汉电信获悉,本月起,武汉家庭宽带可免费提速。今后,江城市民的家庭入户宽带将逐步达到20M,比现在家用ADSL快10 倍。     武汉电信方面介绍,本月起,将对电信宽带实施大提速。对家庭宽带4M以下的新老用户实现免费提速,对4M家庭宽带优惠提速至10-20M。企业宽带用户也可优惠提速至光纤宽带。     武汉电信相关负责人在接受采访时表示,目前,武汉的平均带宽已达到4M水平,领先于全国其他城市的2M的人均宽带。此次宽带提速活动,主要是通过加装天翼手机或相关加装包加入“我的e家”的2M以下家庭宽带用户实施免费提速至4M。
[网络通信]
IFA消费电子展回顾:4K电视受人关注
索尼推出的84英寸4K电视机,型号为XBR-84X900   导语:美国IT网站PCWorld今天撰文,对今年的IFA消费电子展的重大趋势进行了总结,4K电视、混合平板电脑、OLED和NFC等技术均榜上有名。   以下为文章全文:   在今年的柏林IFA消费电子展上,各大厂商纷纷推出并展示了超高清电视机、采用微软操作系统的混合平板电脑,以及首批采用Windows Phone 8的设备。   以下就是IFA 2012最有趣的几大趋势以及相关产品:   4K电视   LG、索尼和多家厂商都推出了所谓的4K电视,将分辨率从目前的1920×1080提升至3840×2160。   4K电视的概念源于水平分辨率。电视厂商意
[半导体设计/制造]
IFA消费电子展回顾:<font color='red'>4</font>K电视受人关注
ADI实验室电路:完整的HART兼容型4mA至20mA解决方案(二)
瞬态电压保护 AD5422 内置ESD保护二极管,可防止正常操作造成的损害。但是,工业控制环境会使I/O电路遭受高得多的瞬变。为了防止过高瞬态电压影响AD5422,可能需要外部功率二极管和浪涌电流限制电阻,如图1所示。对电阻值的约束条件(图1中显示为18Ω)是,在正常工作期间,IOUT的输出电平必须保持在其顺从电压限值(AVDD − 2.5 V)以内,并且这两个保护二极管和电阻必须具有适当的额定功率。在18Ω的条件下,对于4 mA至20 mA输出,引脚处的顺从限值降低V = IMAX × R = 0.36 V。 OP184 缓冲器的正输入端还连接了一个10 kΩ电阻,用以限制瞬态期间的电流来保护放大器。通过瞬态电压抑制器(T
[模拟电子]
ADI实验室电路:完整的HART兼容型<font color='red'>4</font>mA至20mA解决方案(二)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved