Pico 实例-按键外部中断触发-尝试在使用类实例调用类外函数 和 pico micropython函开发的一些弊端

Pico 开发实例,这次分享将我做的项目的一小部分拿出来分享,遇到了两个问题,一个是使用类实例调用不属于此类内的一个函数调用方法,另一个是Pico 使用micropython开发处理中断优先级的问题。

首先就是调用类外函数的问题,即C语言中的函数指针作为参数,调用的时候导入的就是函数地址,进行间接调用。

在python上以前没有学到,觉得有意思,于是想将其进行分享,首先我将按键 写成class的形式,这样简洁些,主函数文件调用的时候,只用import就可以了,先看下我写好的

from machine import Pin
import utime

class button:
    #mode初始状态,0上拉,1下拉
    def __init__(self,buttonPin,mode,func):
        self.Pin = buttonPin
        self.Mode = mode
        if mode == 0:
            self.key = Pin(self.Pin,Pin.IN,Pin.PULL_UP)
        elif mode == 1:
            self.key = Pin(self.Pin,Pin.IN,Pin.PULL_DOWN)
        self.Func = func  ##外部函数导入
                   
    def external_interrupt(self,pin):
        utime.sleep_ms(100)
        if self.key.value() ==  self.Mode:
            print('The button is preesed')
            self.Func()    #外部函数调用
            
    def check(self):
        if  self.Mode == 0:
            self.key.irq(self.external_interrupt,Pin.IRQ_FALLING)
        elif self.Mode == 1:
            self.key.irq(self.external_interrupt,Pin.IRQ_RISING)

如果不这样写每次想使用它的时候从外部导入,就要一次次修改这个文件,每换一个函数就要改一次button.py,破坏了写它的初衷,这样每次初始化的时候,既设定好了模式,也可以将按键出发调用的函数导入进去。

当然了,这也有弊端,就是我还不会将外部函数所要的参数一起导入,以为我还没用到这个的必要,就没有深究,希望有大佬解惑,其次就是可以把中断处理函数写成虚函数,可以在main.py里重写,但是我不会,python是自学的,还不是很会那些高级操作

其次就是pico 目前我无法处理中断优先级
Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority=1, wake=None, hard=False)

这段函数摘抄自micropython中 Class machine的函数说明中
如图所示
函数解释

但是在现实使用此函数添加优先级的时候,会出现这个参数不被接受的报错
在这里插入图片描述
在这里插入图片描述

目前仍无法解决,请解决了的大佬在评论区教下我大致方法。我可能要去学习C开发才能解决这个问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值