4633|2

1万

帖子

16

TA的资源

版主

楼主
 

LPC1500体验+mbed按键中断 [复制链接]

本帖最后由 ddllxxrr 于 2014-8-19 13:21 编辑

在前面的mbed数字输入输出初步应用中,通过读取管脚的电平状态来判断用户的输入,但我们发现这种实现方式会浪费大量的MCU时间在检查管脚的状态上,应该说应用效果并不理想,那么有没有另外的方式无需检查就可以处理管脚状态的变化呢,答案是肯定的,那就是MCU的中断系统。MCU的中断系统不但可以处理管脚的变化,还可以处理更复杂的计时器的变化、MCU通讯状态的变化等,是微处理器中最重要的概念之一。


我们把原先通过不断查询来处理事件的方式叫做轮询,它和中断方式一起构成微处理器最常用的事件处理解决方案。


中断处理流程中的中断处理向量是从中断处理向量表中查询的,该表设定了所有中断处理流程的入口,它是在mbed的启动代码中被初始化的,一般都在.S汇编文件中。GPIO中断是微处理器中断系统中最简单也是最常用的中断类型,它可以让用户在某个管脚状态发生特定的变化时执行相应的代码。需要注意的是,并不是所有的GPIO管脚都具备中断处理能力,如xbed LPC1768的19,20管脚就不能当作中断管脚。咱这款开发板LPCXprewwo1549开发板几个按键好像都不行, 最后我用P0_8,这个引脚实现了中断功能,我的程序很简单,只要进入中断灯就灭,然后复位再做.还是一样.我用镊子轻触,它就动作,还挺灵的.
mbed的中断函数:

类名
方法
用途
InterruptIn
InterruptIn(PinName pin);
构造函数,把pin管脚设成中断处理管脚
int read();
读取管脚的当前状态
void rise(void (*fptr)(void));
设置管脚上升沿触发的中断处理函数
void fall(void (*fptr)(void));
设置管脚下降沿触发的中断处理函数
void mode(PinMode pull);
设置管脚的模式,一般来说,上升沿处理应设成PullDown,下降沿触发设成PullUp

我的实验程序:
  1. #include "mbed.h"


  2. DigitalOut led(LED1);

  3. InterruptIn btn2(P0_8);



  4. void flip()

  5. {

  6.     led=1;

  7. }
  8. int main() {
  9.     __enable_irq();

  10.     while(1)
  11.     {
  12.    
  13.     btn2.fall(&flip);
  14.    }
  15.                         ;

  16. }
复制代码
截图:


此帖出自NXP MCU论坛

最新回复

既然是中断处理,为什么还要出现在主循环里面呢??不懂。  详情 回复 发表于 2014-11-25 13:17
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么会这样
此帖出自NXP MCU论坛
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
既然是中断处理,为什么还要出现在主循环里面呢??不懂。
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表