<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機C程序的中斷函數調用子程序沖突問(wèn)題

單片機C程序的中斷函數調用子程序沖突問(wèn)題

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏
單片機或者ARM的使用過(guò)程中,必會(huì )遇到使用片上中斷資源的時(shí)候,中斷單片機的靈魂和精髓所在,像定時(shí)/計數器一樣有很重要的作用。設置中斷的作用是能及時(shí)響應重要的程序響應,以提高M(jìn)CU和MPU的對重要資源的響應速度。在響應中斷的過(guò)程中,系統會(huì )自動(dòng)保存斷點(diǎn)(C語(yǔ)言編程中),等到中斷響應結束之后,程序會(huì )再次回到斷點(diǎn)處繼續執行main函數。這就出現了問(wèn)題:有可能在中斷函數中調用的子函數和main函數中調用的子函數重復,比如,在main函數執行到display()顯示函數的時(shí)候,發(fā)生了ESUART中斷,這是程序需要保存現場(chǎng)和斷點(diǎn),將現在的main正在執行的一些資源壓入堆棧。如果在interrupt()函數中也調用display()函數的話(huà),會(huì )導致中斷中的函數執行不正常,即顯示亂碼或者不顯示,在返回main函數時(shí),也有可能導致之前壓入堆棧的資源發(fā)生改變,導致main()顯示異常,發(fā)生不可預料的結果。但是若main函數中沒(méi)有執行display函數時(shí)發(fā)生中斷,則中斷函數中的display函數則能正常顯示。

解決這一問(wèn)題的一個(gè)辦法是復制一套需要調用的子函數,給這些子函數重新命名,包括子函數中調用的子函數。這樣,主函數和中斷函數調用的子函數就不會(huì )發(fā)生沖突,兩邊都可正常執行。

本文引用地址:http://dyxdggzs.com/article/201611/321263.htm

void display(void)//供main函數調用
{
write_com(0x01);
……
……;
}
void display_interrupt(void)//供interrupt函數調用
{
write_com_interrupt(0x01);//所有被調用的子函數都應備份
……;
……;
}



關(guān)鍵詞: 單片機中斷函數子程

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>