首页 > 其他分享 >按键消抖stm32示例代码

按键消抖stm32示例代码

时间:2023-04-15 18:12:05浏览次数:46  
标签:sys cnt 示例 消抖 stm32 key 按键 reg

module key_debounce(
    input        sys_clk ,
    input        sys_rst_n ,

    input        key ,         //外部输入的按键值
    output  reg  key_value ,   //消抖后的按键值
    output  reg  key_flag      //消抖后的按键值的效标志
);

//reg define
reg [19:0] cnt ;
reg        key_reg ;

//*****************************************************
//**                    main code
//*****************************************************

//按键值消抖
always @ (posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n) begin
        cnt <= 20'd0;
        key_reg <= 1'b1;
    end
    else begin
        key_reg <= key;           //将按键值延迟一拍
        if(key_reg != key) begin  //如果当前按键值和前一拍的按键值不一样,即按键被按下或松开
            cnt <= 20'd100_0000;  //则将计数器置为20'd100_0000,
                                  //即延时100_0000 * 20ns(1s/50MHz) = 20ms
        end
        else begin                //如果当前按键值和前一个按键值一样,即按键没有发生变化
            if(cnt > 20'd0)       //则计数器递减到0
                cnt <= cnt - 1'b1;  
            else
                cnt <= 20'd0;
        end
    end
end

//将消抖后的最终的按键值送出去
always @ (posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n) begin
        key_value <= 1'b1;
        key_flag  <= 1'b0;
    end
	//在计数器递减到1时送出按键值
    else if(cnt == 20'd1) begin
		key_value <= key;
		key_flag  <= 1'b1;
        end
    else begin
		key_value <= key_value;
		key_flag  <= 1'b0;
    end
end

endmodule

标签:sys,cnt,示例,消抖,stm32,key,按键,reg
From: https://www.cnblogs.com/xzh-personal-issue/p/17321275.html

相关文章

  • 使用 Python 的 socket 库来实现一个简单的 Socket 示例
    以下是一个简单的服务器端和客户端的例子:服务器端:pythonimportsocket#创建socket对象serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#获取本地主机名host=socket.gethostname()#设置端口号port=9999#绑定端口号serversocket.bind((h......
  • STM32启动分析之main函数是怎样跑起来的
    1、MDK目标文件1)MDK中C程序编译后的结果,即可执行文件数据分类:RAMZIbss存储未初始化的或初始化为0的全局变量和静态变量heap堆,系统malloc和free操作的内存stack栈,存储函数临时局部变量RWdata已经初始化且不为0的全局变量和静态变量FLASHROtext代码段,C......
  • 常用的Git命令及示例
    目录01gitinit:初始化一个空的Git仓库02gitadd将修改添加到Git仓库暂存区03gitcommit将修改提交到Git仓库04gitpull从远程Git仓库拉取最新的代码05gitpush将本地代码推送到远程Git仓库06gitbranch创建和管理Git分支新建分支查看分支删除分支07gitcheckout切......
  • Java中常用排序算法及示例-冒泡排序、希尔排序、选择排序、插入排序、合并排序、基数
    场景Java中需要对数据进行排序处理,常用的排序算法以及示例进行归纳整理。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、冒泡排序冒泡排序法又称为交换排序法,原理是从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较。如此扫描......
  • 米尔STM32MP135核心板新品发布!又一款入门级嵌入式开发平台
    自2007年意法半导体(ST)推出STM32首款Cortex-M内核MCU,十几年来,ST在MCU领域的发展是飞速向前的。而2019年ST发布了全新的STM32MPU系列产品线,STM32MP1作为新一代MPU的典范,有着极富开创意义的异构系统架构兼容并蓄了MPU和MCU双重优势,受到业界的喜爱!米尔电子作为ST官方合作伙伴,......
  • 国网B接口调阅实时视频规范解读和代码示例分析
    接口描述国网B接口调阅实时视频,相关规范写的比较粗略:调阅实时视频包括信令接口和媒体流接口,采用标准的SIPINVITE+SDP流程,媒体传输使用RTP/RTCP。SDP中RTPPayload的取值应遵守下面接口参数中的定义:a)SDP中的媒体信息,应仅有一个m行,用于描述视频格式。b)视频数据用RTP打包传......
  • 又一款入门级嵌入式开发平台!米尔STM32MP135核心板新品发布
    自2007年意法半导体(ST)推出STM32首款Cortex-M内核MCU,十几年来,ST在MCU领域的发展是飞速向前的。而2019年ST发布了全新的STM32MPU系列产品线,STM32MP1作为新一代MPU的典范,有着极富开创意义的异构系统架构兼容并蓄了MPU和MCU双重优势,受到业界的喜爱!米尔电子作为ST官方合作伙伴,在......
  • STM32引脚复用与重映射(HAL库)
    根据我最近做的实验,我举出下面例子例:部分重映射,我用来把TIM3_CH2重映射到PB5上PinnameTypeMainDefaultRemapPB5I/OPB5I2C1_SMBA/SPI3_MOSI/I2S3_SDTIM3_CH2/SPI1_MOSI1GPIO_InitTypeDefgpio_init_struct;/*......
  • django admin 使用SimpleUI自定义按钮弹窗框示例
    actions=['button_exeScript',]defbutton_exeScript(self,request,queryset):passbutton_exeScript.layer={#弹出层中的输入框配置#这里指定对话框的标题'title':'弹出层输入框',#提示信息......
  • 6.case语句之场景示例:Rsync启动脚本
    1.编写一个rsync的启动停止脚本   实现:startstopstatusrestart   1.如何启动rsync        /usr/bin/rsync--daemon   2.如何停止rsync    pkillrsync #注意:千万不要使用rsync作为脚本的名字   3.参考系统中其他的服务的......