固件#04--STM32L073RZ-Nucleo按键状态机

本文介绍了如何使用状态机思想设计按键状态机,详细阐述了有限状态机的概念,包括Moore和Mealy状态机。以STM32L073RZ-Nucleo开发板为例,讨论了按键扫描的四种方式,并提供了一个具体的按键状态机实现,包括松开、抖动、按下和长按四种状态,通过定时器中断实现低延迟和防抖动处理。
摘要由CSDN通过智能技术生成

状态机是一种思想方法

状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。

状态机简写为FSM(Finite State Machine),主要分为2大类:

  • 第一类,若输出只和状态有关而与输入无关,则称为Moore状态机
  • 第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机

有限状态机

是表示有限多个状态以及在这些状态之间转移和动作的数学模型。

思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM–有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点。

同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷的事务。

按键状态机

按键的扫描方式主要有下面几种:

  1. 死循环扫描方式:这种扫描方式,一般出现在大量的单片机或开发板的配套例程里面。这种方法最大的缺点就是占用CPU时间过长。当功能比较多的时候,就会造成系统比较卡顿的现象,使系统运行不流畅,造成的原因就是delay_ms(20),因为在延时的20ms里面,CPU完全是死等在那里。

  2. 中断方式:这种按键扫描方式一般是利用外部中断来实现,因为外部中断一般具有上升沿触发中断、下降沿触发中断、高电平触发中断、低电平触发中断等,外部中断检测到该信号后,进入外部中断处理程序,从而实现按键扫描。缺点是一般MCU的外部中断口不多

  3. ADC检测按键:这种方法一般是使用在具有ADC功能的单片机上,当IO口不足时,可以使用一个AD口来检测按键,每个按键按下时,AD采集到的数据不一样,从而来实现按键的检测。

  4. 定时器定时扫描方式:这种方法和方法1有点类似,只是不会像方法1那样死等在那里消耗MCU运行时间,而是通过定时器扫描来实现。首先,MCU检测到按键后,定时器定时,达到一定时间后,继续扫描按键是否按下,然后计时按键按下的时间,当20ms以后按键还是按下状态,则执行按键操作,反之则认为是抖动。

STM32L073RZ-Nucleo状态机实例

以按键检测这个事件为例,可以把我们按按钮这个事件分成四个状态 ①松开态 ②抖动态 ③按下态 ④长按态.

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值