首页 - 信息 - STM32按键消抖代码(stm32按键消抖程序)_1

STM32按键消抖代码(stm32按键消抖程序)_1

2023-09-16 19:26

STM32按键消抖代码(stm32按键消抖程序)

stm32的PA1口接一个按键,按下这个键就加1这怎么写程序

本人只讲思路:(1)首先你要明确你的按键是上拉接法还是下拉接法;(2)要明确按键是输入设备,所以按键接在PA1上,你要根据按键硬件电路的上拉或下拉接法来确定PA1这个GPIO口的输入方式,按键硬件上是上拉接入,PA1就配置上拉输入,同理,下拉对应下拉;(3)然后写程序,首先写GPIO初始化程序:包括使能时钟、输入模式设置、速度设置、上下拉设置;(4)在写按键检测程序之前要明确检测上升沿还是检测下降沿:如果按键在硬件上是上拉接法,则按下按键会产生负脉冲按键信号,按键检测程序则检测下降沿即可。如果是下拉接法,则当按键按下则产生正脉冲按键信号,按键检测程序则检测上升沿即可。(5)根据(4)中所述,写按键检测上升沿或者下降沿的按键检测程序,并且在按键检测程序中应该采用延时程序实现10至20ms的延时处理按键的抖动,目的是为了消除按键产生的机械抖动,专业说法叫做按键的消抖。(6)在按键检测程序内部,当按键检测成功,则执行自己设定的变量自加1的这一行代码。以上六步就可以实现君所需功能。

STM32中断采用按键上升沿怎样消抖啊?

这里的消抖不能紧紧靠上升沿中断,还需要定时器时器帮助,上升沿中断来的时候,打开下降沿中断,同时打开定时器开始计时,接着,若是定时器先触发,那么按键有效,若下降沿先触发,此次按键需要消除,原理是这样。
但只是一个按键检测,要求不高的场合使用时间片循环就好了,没必要消耗那么多硬件资源。当然,上面采用硬件资源来消抖是最严谨。追问

这是EXTI配置,关于EXTI配置里面没有提到按键啊,这我就不会了,以前是这样写

if(key=1)

{delay();if(key=1)}然后写个点亮led的程序;

但是现在程序不需要以上程序就能中断,我那个delay就不知道加哪里了,,,

在中断服务函数里我看到这个程序,好像是检测中断标志位

不知道这样写对不对,我个人以为这是不对的,因为这是产生中断后才进这个函数的执行一些程序,在这里加个延迟无非是拖延中断后的程序

    stm32按键的问题

    需要消除抖动!库函数只是提供了一个接口给你去使用!至于为什么没有用这个需要看一下你的代码!

    使能的时候需要时钟和IO一起,而且还得是输入!!

    在按键的时候可以用万用表测量一下按键段的电压跳变情况

    如果还不会的追问吧!!!!

    追问

    这是我的全部程序,,,,,能帮我看看么。。

    追答

    你用的是jlink吧??

    追问

    不是事SW

    stm32 按键输入 代码求解释

    JTAG_Set(SWD_ENABLE)估计是禁用JTAG启用SW模式,
    key_up是按键没有按下的标志,没有按下时为1,按下时清0
    if(key_up&&(KEY0==0||KEY1==0))如果按键在之前没有按下而且现在按下的是KEY0或者KEY1追问

    如果没有key_up 呢? 为什么没有按下 还要一个标志啊

    追答

    如果不用这种标志的方法一般会用while(KEY==0);等待按键松开,但是这样的话按键按下就什么也做不了了

    stm32的外部中断线 如何防抖动? 给一个按键 就进入中断好多次 怎么办?

    最绝的办法就是用RS触发器构成防抖电路,但这成本未免高一些。
    你试试在按键上并联一个1uF左右的电容试试。

    以上就是小编对于STM32按键消抖代码(stm32按键消抖程序)问题和相关问题的解答了,STM32按键消抖代码(stm32按键消抖程序)的问题希望对你有用!