原因:中断服务函数里不应该有新增变量。
参考:https://docs.singtown.com/micropython/zh/latest/openmvcam/reference/isr_rules.html
解决办法:中断服务函数应该尽量短,不应该有采集图像和处理图像。
可以运行的代码:
import sensor, image, time
from pyb import Pin, Timer,LED
import math
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.VGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(True) # must be turned off for color tracking
sensor.set_auto_whitebal(True) # must be turned off for color tracking
clock = time.clock()
blue_led = LED(3)
red_led = LED(1)
ROI = (200,80,240,280) # 定义感兴趣范围
MY_AREA=ROI
def tick1(timer):
global red_led
red_led.toggle()
tim = Timer(2, freq=0.2) # 使用定时器2创建定时器对象-以1Hz触发
tim.callback(tick1)
#tim.callback(lambda t:tick()) # 将回调设置为tick函数
while (True):
img = sensor.snapshot()
img.draw_rectangle(MY_AREA)
time.sleep(10)