4*4键盘程序代码 基于STM32

本文介绍了基于STM32的4*4键盘扫描程序,探讨了初始代码冗余的问题,并分享了如何通过优化位操作减少代码长度。在调试过程中,发现了按键连按的问题,通过将if语句改为while语句解决了该问题。作者强调了实践和错误在学习过程中的重要性,即使会遇到低级错误,但能加深对知识的理解。
摘要由CSDN通过智能技术生成

4*4键盘程序代码 基于STM32

 

这是自己写的扫描第一行按键的程序代码。

PE的位8~位11设置为下拉输入。

PE的位12~位15设置为推挽输出

其中PE的位11是4*4键盘的第一列,PE的为键盘的第一行。

先将第一行设置为高电平,检测列中是否有高电平

u8 KEY_Scan(u8 mode)

{       

         staticu8 key_up=1;//按键按松开标志

         if(mode)key_up=1;  //支持连按

         GPIO_SetBits(GPIOE,GPIO_Pin_15);                 

         if(key_up&&( (GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_8)) 

                                     ||(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_9))

                                     ||(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_10))

                                     ||(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_11)) ) )

         {

                   delay_ms(10);//去抖动

                   key_up=0;

                   if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_8) )return 10;

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值