|
|
你的意思是不是在執(zhí)行pattern2();的過(guò)程中,突然來(lái)了中斷,中斷按鍵掃描的結(jié)果是F=1;但是中斷退出后你想直接執(zhí)行pattern1();但是程序還是會(huì)把pattern2();執(zhí)行完才會(huì)執(zhí)行pattern1();導(dǎo)致1的任務(wù)被立即執(zhí)行,產(chǎn)生了問(wèn)題,是這樣吧!
如果是這樣,你需要將pattern1();直接放到中斷中去執(zhí)行,但是要確保它不會(huì)占用太長(zhǎng)時(shí)間,尤其是delay肯定是不能有的。其實(shí)我們把這種任務(wù)叫做“剎車(chē)”任務(wù),有危險(xiǎn)就要?jiǎng)x車(chē),車(chē)就要立即停止,所有其它任務(wù)都要靠邊兒站,這樣才不會(huì)發(fā)生交通事故。
你還可以通過(guò)引入OS來(lái)盡可能保證單核MCU的資源盡可能不被delay這種耗時(shí)間的任務(wù)占用不必要的時(shí)間,
同時(shí),也可以通過(guò)給任務(wù)排版優(yōu)先級(jí)來(lái)解決任務(wù)排序問(wèn)題,但是以你目前的能力,不建議立即引入,再多寫(xiě)寫(xiě)代碼,多看看代碼吧。
另外,如果你是多核的mcu,可以讓不同內(nèi)核做不同的事情,也能解決你的問(wèn)題,這個(gè)不太符合你的情況。 |
|