查看: 1338|回复: 4
打印 上一主题 下一主题

MicroPython 5 按键、回调和中断

[复制链接] qrcode

30

主题

34

帖子

105

积分

注册会员

Rank: 2

积分
105
楼主
跳转到指定楼层
发表于 2016-6-14 12:11 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     pyboard 有两个按键USR和RST。RST是硬件重启的按键。
     USR 按键用户可以来使用,通过调用Switch对象。如下所示:
  1. >>> sw = pyb.Switch()
复制代码

       记得包含 pyb, import pyb;
通过调用可以得到如下的按键状态:
  1. >>> sw()
  2. False
复制代码

      未按下USR按键的时候打印 False,按下 USR按键的时候打印 True

5.1 Switch callbacks
        switch 虽然是一个很简单的对象。但它具有一个高级的功能就是回调函数 sw.callback().
当按键被按下的时候调用回调函数,执行中断,回调函数内的内容。
  1. >>> sw.callback(lambda:print('press!'))
复制代码
    上面的内容是,当按键被按下的时候打印“press!”。
    下面的函数LED 的亮灭绑定到switch函数上,
  1. >>> sw.callback(lambda:pyb.LED(1).toggle())
复制代码
      可以将任何函数(不带参数)的回调函数,以上我们使用Python的lambda特征来动态创建一个匿名函数。但我们可以同样做:
  1. >>> def f():
  2. ...   pyb.LED(1).toggle()
  3. ...
  4. >>> sw.callback(f)
复制代码

       请注意,您的回调函数不能分配任何内存(例如它们不能创建一个元组或列表)。回调函数应该是比较简单的。如果你需要做一个列表,事先把它做一个列表,把它存储在一个全局变量(或使它靠近它)。如果你需要做一个长期的、复杂的计算,然后用这个回调来设置一个标志,然后再通过一些其他的代码来响应。

5.2 中断
       让我们一步一步,通过探索Switch回调函数的细节。当注册了sw.callback()函数,switch 设置了按键引脚的外部中断触发(下降沿)。这意味着,微控制器将检测引脚的任何变化,并将发生以下:
    (1)当开关被压的变化发生在引脚(电平从低到高),微控制器的寄存器相应的发生变化。
    (2)微控制器完成当前机器指令的执行,停止执行,并保存其当前状态(将寄存器压入栈中)。这已暂停任何代码的效果,例如您运行Python脚本。
    (3)微控制器开始执行与该开关的外部触发相关联的特殊中断处理程序。这个中断处理callback()中注册的函数,并且执行它。
     (4)你的回调函数被执行,直到它完成,返回控制权的切换中断处理程序。
     (5)switch中断处理程序返回,并且通知MCU中断已处理。
    (6)微控制器恢复的状态,是它在步骤2中保存的状态,即是中断处理前的状态。
    (7)正在开始运行的代码的执行继续。除了短时间的停顿,这个代码没有注意到它被中断了。
   

当多个中断同时发生时,上述事件序列会变得更加复杂。在这种情况下,中断与最高优先级的先去,然后其他人以他们的优先级。切换中断以最低优先级设置。

5.3 更多
更多关于中断方面的信息,请阅读(http://docs.micropython.org/en/l ... ules.html#isr-rules)

回复

使用道具 举报

0

主题

87

帖子

22

积分

新手上路

Rank: 1

积分
22
沙发
发表于 2016-6-23 05:51 PM | 只看该作者
全是翻译过来的  鄙视
回复 支持 反对

使用道具 举报

0

主题

100

帖子

44

积分

新手上路

Rank: 1

积分
44
板凳
发表于 2016-6-23 09:17 PM | 只看该作者
Chen Yang 发表于 2016-6-23 17:51
全是翻译过来的  鄙视

哇塞,,,,,
回复 支持 反对

使用道具 举报

0

主题

84

帖子

8

积分

新手上路

Rank: 1

积分
8
地板
发表于 2016-6-23 10:51 PM | 只看该作者
Chen Yang 发表于 2016-6-23 17:51
全是翻译过来的  鄙视

micropython还比较新,需要一个学习过程。
回复 支持 反对

使用道具 举报

0

主题

87

帖子

22

积分

新手上路

Rank: 1

积分
22
5#
发表于 2016-6-24 08:23 PM | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表