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