micropython 中断优先级 设置 代码
时间: 2023-05-28 22:02:09 浏览: 117
Micropython 中断优先级的设置可以通过 nvic 模块来实现。具体代码如下:
```python
import micropython
import machine
import utime
# 定义一个中断处理函数
def isr(pin):
print('Interrupt! Pin:', pin)
# 绑定中断处理函数到引脚上
pin = machine.Pin(2, machine.Pin.IN)
pin.irq(trigger=machine.Pin.IRQ_RISING, handler=isr)
# 设置中断优先级
micropython.alloc_emergency_exception_buf(100) # 分配一个紧急异常缓冲区
machine.disable_irq() # 禁止中断
micropython.schedule(isr, pin, priority=1) # 在紧急缓冲区中注册中断处理函数,并设置优先级为1
machine.enable_irq() # 重新允许中断
```
以上代码中,首先定义了一个中断处理函数 isr(),然后将这个函数绑定到引脚上,在引脚上设置了当触发上升沿时触发中断。
接着,通过 micropython.alloc_emergency_exception_buf() 分配了一个紧急异常缓冲区,然后禁止了所有中断,并使用 micropython.schedule() 在紧急缓冲区中注册中断处理函数 isr(),并将优先级设置为1,最后重新允许中断。
这个设置可以保证在一个高优先级的中断处理函数正在执行时,低优先级的中断也可以被正常触发。