`from fpioa_manager import fm
import time
from Maix import GPIO
from machine import Timer
Timing_time = 0
distance = 0
fm.register(10, fm.fpioa.GPIOHS10,force=True)
R = GPIO(GPIO.GPIOHS9,GPIO.IN, GPIO.PULL_DOWN)#HC_SR04的Echo引脚
fm.register(16, fm.fpioa.GPIOHS0,force=True)
key = GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)#按键(用按键模拟HC_SR04的Echo引脚的电平变化)
fm.register(9, fm.fpioa.GPIOHS9,force=True)#HC_SR04的Trig引脚
T = GPIO(GPIO.GPIOHS9,GPIO.OUT)
T.value(1)
fm.register(12, fm.fpioa.GPIO0,force=True)#LED
C = GPIO(GPIO.GPIO0,GPIO.OUT)
C.value(1)
def timer_add (timer):#定时器回调函数
global Timing_time
Timing_time += 1 #定时器每回调一次,Timing_time累加计数
print (Timing_time)
#定时器配置(定时器0,通道0,连续回调, 定时时间10US,回调函数timer_add,无回调函数的第二参数,不立刻开启定时器,中断优先级7,无分频)
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=10, unit=Timer.UNIT_US, callback=timer_add, arg=None, start=False, priority=7, div=0)
def HC_SR04 (pin_num):#外部中断回调函数
global Timing_time,distance
if key.value() == 1: #判断是上升沿
tim.start() #打开定时器
C.value(not C.value())
else: #判断是下降沿
tim.stop() #打开定时器
distance = (Timing_time*0.34)/2 #计算距离CM
Timing_time = 0 #计数清零
print('distance:',distance)
while True:
T.value(1)
time.sleep_us(20)
T.value(0)
key.irq(HC_SR04,GPIO.IRQ_BOTH, GPIO.WAKEUP_NOT_SUPPORT,1)#外部引脚中断配置
time.sleep_ms(10)
`
代码执行现象:在定时器开启后外部引脚中断就不好使了。
问题:打开定时器为什么会影响外部中断?