今天我們學(xué)習(xí)了臨界區(qū)與中斷開關(guān),普通的禁止和使能中斷二庵,在禁止中斷時(shí)有觸發(fā)中斷的事件發(fā)生贪染,當(dāng)使能中斷時(shí)該中斷不會在響應(yīng),說明普通的禁止中斷是阻止了中斷的發(fā)生催享。而在進(jìn)入臨界段時(shí)杭隙,有中斷發(fā)生,在退出臨界段時(shí)中斷會得到響應(yīng)因妙,說明臨街段只是延遲了中斷的響應(yīng)時(shí)間痰憎,并沒有真正的阻止中斷。要導(dǎo)入的文件import pyb, micropython, array ?# 主程序與定時(shí)中斷共享的臨界區(qū)
index = 0
data = array.array('i', 0 for x in range(20))
tim4 = pyb.Timer(4, freq=100, callback=callback1) # 定時(shí)中斷開始for loop in range(10000):
if index > 0:
irq_state = pyb.disable_irq() # ***開始訪問臨界區(qū)數(shù)據(jù)攀涵,要關(guān)中斷
for x in range(index):
print(data[x])? # 讀臨界區(qū)數(shù)據(jù)
index = 0? ? ? ? ? # 修改臨界區(qū)數(shù)據(jù)
pyb.enable_irq(irq_state)? ? # ***訪問臨界區(qū)數(shù)據(jù)結(jié)束铣耘,開中斷
print('loop {}'.format(loop))
pyb.delay(1)
tim4.callback(None) #關(guān)定時(shí)器中斷