stm32矩阵键盘输入多位数据

2019-08-16来源: eefocus关键字:stm32  矩阵键盘  多位数据

目的:实现矩阵键盘的多位数据输入

思路:使用while循环来规避掉循环检测中键盘的重复输入。


注:键盘检测程序资源众多,此处不列举了。


参数:

key_back():键盘检测函数,返回值为key_val(键值),无摁键时返回no_ipt(无按键时的回传值,自订)


方法:


//进入while开始键盘检测,获得输入值后回传

u8 key_input_part(void)

{

while(1)

{

if( key_back()!= no_ipt)

{return key_back();}

}

}


//循环输入,将数据整合为多位并返回,函数传参为输入位数

u16 key_input(int a)

{

int key[a];

u16 aa=0;

//循环输入

for(int i=0;i

{

key[i]=key_input_part();

while(key[i]==key_back())

{;}

}

//数据整合

int bb=a-1;

for(int j=0;j

{

aa=aa+key[j]*MYS(bb);

bb--;

}

return aa;

}


//十进制幂运算,用于数据整合

static u16 MYS(int a)

{

int aa=1;

for(;a>0;a--)

{ aa=aa*10; }

return aa;

}


总结:调用函数后执行一次输入,然后进入while循环,松开按键之前不进行其他操作,以规避循环检测的重复输入,获得数据后将单个数据整合为多维数据,实现函数功能。


结果:执行temp=key_input(4),依次输入1、3、2、5,调用temp可得temp=1325,实现功能。


缺点:

1、需要设定输入位数

2、并不能避免循环输入检测对系统资源的占用


关键字:stm32  矩阵键盘  多位数据

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic471337.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:16.HAL库之SPI和QSPI
下一篇:关于STM32F103型号的矩阵按键的程序书写

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

【STM32F103】中断综述

一、中断内核: STM32的中断很强大,每个外设都可以产生中断,F103在内核水平上搭载了异常响应系统,系统异常有8个(算上RESET和HardFault也就10个),外部中断有60个,但是根据NVIC(嵌套向量中断控制器,控制整个芯片中断相关的功能),IP(中断优先级寄存器)数组中预留了240个位置(NVIC结构如上图),可见眼光之远,用于扩展,这是STM32F103用不到这么多。如果以后要找跟内核相关的函数,都存在core_cm3.c和misc.c中,包括NVIC的函数的声明,但是其具体的库函数内容并不是和固件库头文件core_cm3.h一致(不在core_cm3.c),而是放在库函数的misc.c中,这点需要
发表于 2019-08-23
【STM32F103】中断综述

关于由CubeMx生成stm32f4+freertos,不正常分析之堆栈大小设置

freertos官方手册上有说,移植中出现的问题大多数是由堆栈设置不合理造成的,今天结合自身遇到问题分析一下1.任务堆栈设置过小,很容易造成硬件溢出,跳转到void HardFault_Handler(void);调试方法,可以通过调用函数,UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );来跟踪剩余堆栈,不过在CubeMx中的Configuration->FreeRtos->Include parameters中使能uxTaskGetStackHighWaterMark函数;2.整体设置过小,TOTAL_HEAP_SIZE
发表于 2019-08-23

CubeMX Stm32F407生成一定周期的占空比不同的方波DMA+定时器

先上图如图 是我生成的一个波形  这个波形的占空比在连续的四个周期内分别是10%,20%,30%,40%, 并且按照这个顺序循环这里大致介绍一下实现的方式。使用的软件是Cubemx(库函肯定也可以实现)第一步是器件选型  这一部分不做介绍  用的是Stm32F407第二是时钟配置接下来是定时器配置 第三步就是生成代码了这里 需要在生成的代码里面加上一行开始的代码。
发表于 2019-08-23
CubeMX Stm32F407生成一定周期的占空比不同的方波DMA+定时器

STM32学习日志--使用DMA功能自动更新PWM的输出

/******************************************************************************* 编译环境: EWARM V5.30 硬件环境: DZY2.PCB STM32 FW:   V3.0.0 作者 : szlihongtao ****************************************************************************** REV  : V1.00 DATE : 2011-04-18 NOTE
发表于 2019-08-23

STM32控制SG90舵机

简介通过使用STM32控制SG90舵机进行转动PWM输出:PC6定时器:TM3,通道1接线如下:控制原理及PWM配置舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分PWM周期为20ms = (7200*200)/72000000=0.02所以TIM_Period = 199,TIM_Prescaler = 7199占空比 = t / T 相关参数如下:t = 0.5ms——————-舵机会转动 0 °t = 1.0ms——————-舵机会转动 45°t = 1.5ms——————-舵机会转动 90°t = 2.0ms——————-舵机会转动 135°t = 2.5ms
发表于 2019-08-23
STM32控制SG90舵机

用PWM控制舵机(以是stm32为例)

为0.5ms-2.5ms<占空比2.5%~12.5%>范围内的角度控制脉冲部分,总间隔为2ms。即:0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0ms-----------135度;2.5ms-----------180度;注意:注意控制舵机的信号,电源要共地。 STM32的实现/* 系统默认时钟72MHz, 初始化定时器生成PWM, 参考正点原子的程序 * 72000000/(719+1)/(1999+1)=50Hz  1/50*1000=20ms */TIM3_PWM_Init(1999,719
发表于 2019-08-23
用PWM控制舵机(以是stm32为例)

小广播

何立民专栏

单片机及嵌入式宝典

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

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