|
錯誤做法:中斷調(diào)用A,A里面調(diào)用B,主函數(shù)調(diào)用B。
正確做法:主函數(shù)調(diào)用B,中斷函數(shù)里面打標(biāo)志Flag=1,主函數(shù)里面Flag = 1,就調(diào)用函數(shù)B同時Flag =0
第一個做法之所以錯誤,就是如果主函數(shù)調(diào)用了函數(shù)A,中斷通過B函數(shù)調(diào)用A,那么中斷調(diào)用會改變A函數(shù)的狀態(tài)。
打個比B函數(shù)是你進(jìn)入房間->開水龍頭->洗手->關(guān)水龍頭->用紙巾擦手->拿起手機->開門->離開
如果你用主函數(shù)走到 ”開水龍” 這一步然后被中斷打斷了。
中斷進(jìn)來 “關(guān)水龍頭” 、 “拿走手機”然后離開
主函數(shù)回到 “開水龍頭”這一步但是水龍頭在中斷那里已經(jīng)被關(guān)了(寄存器被改變了),你還能洗手嗎?手機也被拿走了(全局變量改變了)你還能拿走手機嗎?
|
|