中斷優(yōu)先級高低順序 中斷優(yōu)先級如何設置?
中斷優(yōu)先級如何設置?定時器中斷和串口中斷沖突的原因是什么? 定時多少,串口的波特率多少?一般情況,個人覺得不至于沖突這么嚴重。很有可能是你在串口中斷函數(shù)或者定時中斷函數(shù)里做了太多的事情。以至于下一個中
中斷優(yōu)先級如何設置?
定時器中斷和串口中斷沖突的原因是什么? 定時多少,串口的波特率多少?
一般情況,個人覺得不至于沖突這么嚴重。很有可能是你在串口中斷函數(shù)或者定時中斷函數(shù)里做了太多的事情。以至于下一個中斷來的時候,還沒有跳出上一中斷。
如果是這個原因,可以嘗試在中斷函數(shù)里只簡單的賦值一些標志位。譬如,原來你的程序是在定時中斷里每1秒讓一個AD讀一個電壓,現(xiàn)在改成中斷里設置AD_Flag = 1 然后在main函數(shù)主循環(huán)里不斷查詢 if(AD_Flag ==1) {...//AD讀一個電壓;AD_Flag = 0}
用這種前后臺的方式可以避免上述原因引起的中斷沖突,本人以前試過,有效。希望有所幫助。
單片機的主程序為什么是死循環(huán)?
單片機程序是從上到下執(zhí)行的,到底了需要從頭開始
單片機集成了CPU、RAM、ROM、GPIO、定時器、中斷等等,是一個“微型的小電腦”。我們編寫的程序經(jīng)過編譯后,需要下載到單片機的ROM。上電后,單片機就可以讀取并執(zhí)行ROM中的程序了。我們編寫的程序經(jīng)過編譯后,其實就是一些單片機可以識別和執(zhí)行的指令,單片機的CPU只有一個線程,一次只能執(zhí)行一條指令,指令從上到下執(zhí)行,到了最后需要跳回最前面才可以生新執(zhí)行,所以單片機的主程序是一個死揗環(huán)。
單片機程序是怎么樣的?
單片機上電后,需要進行初始化,初始化只需要執(zhí)行一次就可以了,所以初始化程序一般不會放入主程序的死循環(huán)中。主程序需要不斷的連續(xù)執(zhí)行的,所以會放入到一個死循環(huán)中去。
由此可見,單片機的程序是從上到下順序執(zhí)行的,需要一個一個任務排隊運行。單片機還有一個中斷系統(tǒng),如果發(fā)生需要即時響應的事件,可以把主程序暫停打斷,先把中斷事件處理完,再返回主程序繼續(xù)執(zhí)行。就像你正在開會的時候,突然老板來電話了,您就需要把會議暫停,先接完老板電話,然后繼續(xù)會議。當然中斷事件也是可以屏蔽的,就像開會的時候來了一個騷擾電話,您可以不理它,或者掛斷它。
歡迎關注@電子產(chǎn)品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習
- 記得點贊和評論哦!非常感謝!