micropython rp2040 PIO中断未触发



这段代码可以工作,但是只有在statemachine 0上运行时才会触发中断:

虽然它是工作,我想知道是否有其他的方法来解决它

from machine import Pin, PWM 
from time import sleep
import rp2
class PioLoader():

@rp2.asm_pio(set_init=rp2.PIO.OUT_LOW)
def blink():
wrap_target()
set(pins, 1)   [31]
nop()          [31]
nop()          [31]
nop()          [31]
nop()          [31]
set(pins, 0)   [31]
nop()          [31]
nop()          [31]
nop()          [31]
nop()          [31]
irq(0)
wrap()

def irqHandler(sm):
self.sm.active(0)
print("Finished") 

def __init__(self): 
pass
def test(self):
sm = rp2.StateMachine(0, self.blink, freq=2000, set_base=Pin(25))
sm.irq(self.irqHandler)
print(sm)
sm.active(1)
sleep(2) 
sm.active(0)    

有谁能帮忙解决这个问题吗?

发现状态机0到3使用irq(0到3),机器4到7需要irq(0到3)

解决方案是使用irq(rel(0)),它在所有情况下都有效。唷! !希望这能帮助到其他人。

最新更新