本次实验思想是通过当按键按下之后,触发中断,如果中断时间结束后还是按下的,那么就认为确实按下了,否则认为是噪声影响。

实验步骤:

1.配置IO中断

2.初始化消抖的定时器

3.编写中断处理函数:(一个是gpio的中断处理(按键按下开启定时器),一个是定时器的处理(定时器的处理负责小灯闪烁))

gpio中断初始化

/** @description        : 按键初始化* @param            : 无* @return           : 无*/
void filterkey_init(void)
{   gpio_pin_config_t key_config;/* 1、初始化IO复用 */IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18,0);  /* 复用为GPIO1_IO18 *//* 2、、配置GPIO1_IO18的IO属性  *bit 16:0 HYS关闭*bit [15:14]: 11 默认22K上拉*bit [13]: 1 pull功能*bit [12]: 1 pull/keeper使能*bit [11]: 0 关闭开路输出*bit [7:6]: 10 速度100Mhz*bit [5:3]: 000 关闭输出*bit [0]: 0 低转换率*/IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18,0xF080);/* 3、初始化GPIO为中断 */key_config.direction = kGPIO_DigitalInput;key_config.interruptMode = kGPIO_IntFallingEdge;key_config.outputLogic = 1;gpio_init(GPIO1, 18, &key_config);GIC_EnableIRQ(GPIO1_Combined_16_31_IRQn); /* 使能GIC中对应的中断            *//* 注册中断服务函数 */system_register_irqhandler(GPIO1_Combined_16_31_IRQn, (system_irq_handler_t)gpio1_16_31_irqhandler, NULL);gpio_enableint(GPIO1, 18);      /* 使能GPIO1_IO18的中断功能 */filtertimer_init(66000000/100);  /* 初始化定时器,10ms */
}

gpio中断的处理函数

void gpio1_16_31_irqhandler(void)
{ /* 开启定时器 */filtertimer_restart(66000000/100);/* 清除中断标志位 */gpio_clearintflags(GPIO1, 18);
}

定时器的初始化

void filtertimer_init(unsigned int value)
{EPIT1->CR = 0; //先清零/** CR寄存器:* bit25:24 01 时钟源选择Peripheral clock=66MHz* bit15:4  0  1分频* bit3:   1  当计数器到0的话从LR重新加载数值* bit2: 1  比较中断使能* bit1:    1  初始计数值来源于LR寄存器值* bit0:    0  先关闭EPIT1*/EPIT1->CR = (1<<24 | 1<<3 | 1<<2 | 1<<1);/* 计数值    */EPIT1->LR = value;/* 比较寄存器,当计数器值和此寄存器值相等的话就会产生中断 */EPIT1->CMPR  = 0;   GIC_EnableIRQ(EPIT1_IRQn);  /* 使能GIC中对应的中断 *//* 注册中断服务函数            */system_register_irqhandler(EPIT1_IRQn, (system_irq_handler_t)filtertimer_irqhandler, NULL);
}

定时器的处理函数

/** @description        : 定时器中断处理函数 * @param           : 无* @return           : 无*/
void filtertimer_irqhandler(void)
{ static unsigned char state = OFF;if(EPIT1->SR & (1<<0))                     /* 判断比较事件是否发生           */{filtertimer_stop();                  /* 关闭定时器                */if(gpio_pinread(GPIO1, 18) == 0)    /* KEY0                 */{state = !state;beep_switch(state);              /* 反转蜂鸣器                */}}EPIT1->SR |= 1<<0;                        /* 清除中断标志位              */
}

I.MX6U-裸机-按键消抖实验(10)相关推荐

  1. 可编程逻辑器件之按键消抖实验

    一.实验目标 能够熟练的进行可编程逻辑器件开发,能够通过具体工程需求进行需求分析.模块划分.代码编写.功能仿真.综合分析.板级验证,能够独立正确的进行实验操作,培养学生的工程实践研究能力和动手实践能力 ...

  2. [FPGA入门笔记](十):按键消抖实验

    简介 今天购买了AXLINX AX7020的开发板,从今天开始每一个例程都要做文档记录,为自己加油. 本实验,基于ALINX AX7020开发板,芯片为xc7z020clg400-2.开发板输入时钟为 ...

  3. ISE 下按键消抖实验

    实验原理 按键做为基本的人机输入接口,在很多电子设计中都能见到,由于机械特性,在按键按下或 松开的时候,按键输入值是有抖动的,无论按下去是多平稳,都难以消除抖动,按键消抖方式有 很多,本实验主要是通过 ...

  4. ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

    参考:Linux之ARM(IMX6U)裸机按键输入实验(GPIO的输出与输入) 作者:一只青木呀 发布时间: 2020-08-17 21:43:37 网址:https://blog.csdn.net/ ...

  5. ARM(I.MX6ULL) EPIT定时器中断实验、定时器按键消抖

    参考:Linux之ARM (I.MX6ULL) EPIT定时器详解 作者:一只青木呀 发布时间: 2020-09-20 10:03:37 网址:https://blog.csdn.net/weixin ...

  6. 【 FPGA 】按键消抖与LED灯流动小实验

    记录一个小实验吧,实验的目的是仅仅是塞塞牙缝而已,没其他意思,很简单. 功能:拨码开关控制led灯工作与否,拨码开关为on,led灯工作,否则不工作:导航按键up和down,也就是独立按键而已,控制l ...

  7. 《按键消抖与LED控制》实验的个人思考与总结

    2019/01/08,第一个判断是否有按键按下的操作好像有问题,有空在修改! 红色为修改部分: 问题描述: 当三个独立按键的某一个被按下后,相应的LED被点亮:再次按下后,LED熄灭,按键控制LED亮 ...

  8. 前仿真和后仿真的区别,按键消抖设计思想、PLL使用、ODDR2的原语使用 --2020/10/29工作总结

    2020/10/29工作总结 前仿真和后仿真的区别 前仿真 综合后仿真 后仿真 synthesize和implement.generate bitstream 参考链接 按键消抖设计思想 PLL使用 ...

  9. verilog基础-状态机之FPGA独立按键消抖设计与验证(熟练testbench的写法)

    独立按键消抖设计与验证 本实验主要是为了锻炼状态机的思维模式以及熟练掌握TB的写法 本节主要收获了:define的用法,另外就是,顶层的input在TB中是reg的真正含义,其实就是把激励当做寄存器来 ...

最新文章

  1. 2.2.5 NIO.2 Path 和 Java 已有的 File 类
  2. python 程序开机自启动,亲测可用
  3. android camera 检测,检测Android Camera文件夹
  4. websocket 连接本地端口_聊聊 WebSocket,还有 HTTP
  5. Android系统驱动【转】
  6. 查找重复文件_快速查找、删除重复图片及文件!
  7. 从 0 到 1 实现 React 系列 —— 组件和 state|props
  8. Python——数据类型初步:Numbers
  9. 可以悬浮在屏幕的搜题软件_悬浮窗搜题app下载-悬浮窗搜题预约 安卓版v1.0.0-PC6安卓网...
  10. 【SpringBoot_ANNOTATIONS】组件注册 01 @Configuration @Bean
  11. [简单]itext官网例子链接
  12. Springboot应用缓存实践之:Ehcache加持
  13. Chrome插件开发学习心得(一)之前期开发
  14. 同城信息小程序服务器,同城小程序正式上线,这大概是目前信息量最大的小程序了...
  15. springboot前后端分离,邮箱/手机验证号激活和登录,手机注册和激活
  16. GLIBC升级的问题(升级GLIBC之前必看)
  17. 读书笔记-Icepak计算收敛标准
  18. 未来5年做好随时失业的准备
  19. 考试末名的英国教授获诺贝尔奖
  20. LeetCode-912-排序数组

热门文章

  1. 多波束前视声呐的矩形图转扇形图
  2. 店宝宝:干货集合,新手开网店常见问题解答
  3. 今天入手Palm T300
  4. 糖友如何监测血糖水平
  5. 互联网公司运营模式的分析与学习(一)
  6. 【博学谷学习记录】超强总结,用心分享 | 狂野大数据shell脚本个人学习复习记录—PART-03
  7. Noip2018联训日记(Last update 11/9)
  8. 社区团购系统社区拼团系统开发需求与开发流程介绍
  9. 一起看起来是VDR导致的事故
  10. 火焰传感+蜂鸣器的火焰报警实验