按键中断演示|学习笔记

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

开发者学堂课程【嵌入式之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

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

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

相关文章
|
算法 计算机视觉 Python
DSP:数字信号处理技术的魅力与应用
DSP:数字信号处理技术的魅力与应用
|
存储 运维 网络协议
服务发现组件:Consul简易攻略
本篇作为Consul攻略的入门导引,帮助小伙伴了解Consul全貌,包含特性、命令操作、架构原理、介绍了Raft、Gossip协议等。
1390 0
服务发现组件:Consul简易攻略
|
安全 网络安全 数据安全/隐私保护
|
Java Serverless Nacos
nacos常见问题之serverless应用引擎连接异常如何解决?
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
存储 Shell 开发工具
【TortoiseGit】TortoiseGit安装和配置详细说明
【TortoiseGit】TortoiseGit安装和配置详细说明
2728 0
|
安全 Linux
阿里云服务器中挖矿病毒解决办法(已实践)
阿里云服务器中挖矿病毒解决办法(已实践)
2638 1
阿里云服务器中挖矿病毒解决办法(已实践)
|
监控 NoSQL 数据库
课时2:Tair的实操流程及常见问题
课时2:Tair的实操流程及常见问题
|
传感器
tb6612电机驱动与JGB37-520减速直流电机
tb6612电机驱动与JGB37-520减速直流电机
4811 0