按键中断演示|学习笔记

简介: 快速学习按键中断演示

开发者学堂课程【嵌入式之RFID开发与应用2020版:按键中断演示】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/665/detail/11157


按键中断演示

 

接下来就给大家演示一下,首先要明确的是代码里面增加了几个文件,在APP里面把新增加的文件再追加进来,除了main文件,还增加了一下几个文件,添加完后关闭。

image.png

除此之外,lib之前只是单纯的jbl操作,现在用到了扩函数,用到了中断,所以还需要在library里面找到有关中断的,misc属于中断,外部中断exti也是,就这两个文件添加进去。然后再点击ok,重新编译一下。

编译通过,代码多一点,下载的时间也稍微长一点。接下来打开视频,还是之前的代码,还是之前的蜂鸣器,先复位一下,唯一不同的就是现在是中断起作用。而且这里是常亮的,常鸣。

image.png

按一下,按一下亮,按一下灭,这是中断的演示。

接下来再看一下代码,led-flick,代码上要么是on,要么是off并不是滴滴声。

代码如下:

LED_XXX_OFF();//初始化结束熄灭LED}

void led flicker(void){

if(led_flag == 1){

led_flag = 0; LED_XXX_ON();

else{

led_flag = 1; LED_XXX_OFF();

void buzzer_init(void)

因为这个地方只检测了on的时候

While(1){

If(get_key_status()){

就是按下去了的时候检测,抬起来的时候检测不了,如果要坚持抬起来的时候,就要设置双源触发,就要把代码改一下。把上面的触发方式改成下面的触发方式

代码如下:

EXTI Trigger Rising_Falling = 0x10

让它变成双源触发。双元触发就意味着按下去会检测一次,抬起来也会检测一次,如果按下去也会等于一,但是抬起来不会等于一,这就出现问题了。

代码如下:

EXTI1_IRQHandler(void)

f(EXTI_GetITstatus(GPIO XXX KEY LINE)!= RESET)

delay_ms(KEY_SHAKE);//去抖

if(XXX_KEY_STATUS_GET()== 1){

key_status = 1;

SET_BUZZER_FLICKER(5);

EXTI ClearITPendingBit(GPIO XXX KEY LINE);

判断和去抖在这里就会变得非常尴尬,按下去要设置为1,抬起来也要设置成1,这里判断就会显得非常多余可以把这个判断去掉如果加上判断抬起来就是不执行的,就没有意义编写一下,此时的现象可以推测一下,按一下蜂鸣器就响,就可以灯亮,一旦松开就不亮了现在按下去松开,按下去不松,松开没有起作用,是因为去抖没有起作用

image.png

去抖没有起作用,就会导致明明是按下去了,但是还是会弹起来,所以如果用源触发这里就要修改一下。

那么不管使用什么方式,建议自行尝试一下。以上为按键中断的演示。

相关文章
|
10月前
|
Linux 调度
按键消抖的两种方法--中断延迟工作与定时器
按键消抖的两种方法--中断延迟工作与定时器
374 0
|
6天前
|
传感器 监控 C++
外部中断的使用方法
这篇文章介绍了中断的概念,以一个生动的故事比喻,说明中断是如何打断主程序执行并调用中断函数的。文章提到了Arduino控制器和"吃货"模型,展示了如何编写处理吃和开门的代码,并介绍了设置中断的函数`attachInterrupt`。接着,列举了不同Arduino型号的外部中断引脚,并详细解释了中断函数、中断触发模式。最后,提供了一个官方的外部中断例程和其可能的应用场景,如使用旋转编码器或构建监控装置。
31 4
|
7月前
STM32速成笔记(三)—按键检测
本文介绍了如何利用STM32进行按键检测,先介绍了原理,后面给出了配置步骤和应用例程。此外,本文还叙述了如何利用一个按键单独控制一个LED亮灭,以及如何检测按键长短按。
242 0
STM32速成笔记(三)—按键检测
|
8月前
|
物联网
如何实现按键的短按、长按检测?
如何实现按键的短按、长按检测?
|
10月前
|
存储 调度
51单片机--定时器与按键控制流水灯模式
51单片机--定时器与按键控制流水灯模式
318 0
|
11月前
|
芯片
STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
139 0
|
11月前
|
算法 C语言 芯片
按键扫描程序,仅三行程序
按键扫描程序,仅三行程序
58 0
【51定时器】独立按键-短按与长按
【51定时器】独立按键-短按与长按
141 0
【蓝桥杯嵌入式】定时器实现按键单击,双击,消抖以及长按的代码实现
【蓝桥杯嵌入式】定时器实现按键单击,双击,消抖以及长按的代码实现
651 0
|
Linux C语言
linux信号的简单运用,改变Ctrl+C的退出程序信号 编程源码
linux信号的简单运用,改变Ctrl+C的退出程序信号 编程源码
163 0