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开发才能解决这个问题