![]() |
函數被連續嵌套調用了。 |
wssbwssb 發表于 2021-11-23 21:49 錯誤做法:中斷調用A,A里面調用B,主函數調用B。 正確做法:主函數調用B,中斷函數里面打標志Flag=1,主函數里面Flag = 1,就調用函數B同時Flag =0 第一個做法之所以錯誤,就是如果主函數調用了函數A,中斷通過B函數調用A,那么中斷調用會改變A函數的狀態。 打個比B函數是你進入房間->開水龍頭->洗手->關水龍頭->用紙巾擦手->拿起手機->開門->離開 如果你用主函數走到 ”開水龍” 這一步然后被中斷打斷了。 中斷進來 “關水龍頭” 、 “拿走手機”然后離開 主函數回到 “開水龍頭”這一步但是水龍頭在中斷那里已經被關了(寄存器被改變了),你還能洗手嗎?手機也被拿走了(全局變量改變了)你還能拿走手機嗎? |
wssbwssb 發表于 2021-11-23 21:49 最好是更改邏輯,只在一個地方調用, 實在必須都要調用的話…… 再做一個內容完全一樣,但是名字不同的函數,分別給中斷和主程序調用。 |
188610329 發表于 2021-11-23 21:42 能說一下怎么解決嗎?提供一下大至方向,謝謝 |
重復調用, 原則上,中斷和主程序是不能調用同一個函數的。 |
用屏幕截圖比這清晰多了 |