|
要看你對(duì)這個(gè)IO檢測(cè)對(duì)象是什么,還有這個(gè)對(duì)象產(chǎn)生IO變化的時(shí)長(zhǎng)是什么級(jí)別,毫秒級(jí)還是10毫秒級(jí),或是更長(zhǎng)。 一般來(lái)說(shuō),
1:毫秒級(jí)以下的IO變化,都應(yīng)該采用外部中斷來(lái)處理。
2:毫秒以上的到10毫秒以內(nèi),我一般是在毫秒的定時(shí)中斷函數(shù)里面,做一個(gè)標(biāo)志位檢測(cè),在主程序或者其它地方判斷這個(gè)標(biāo)志位。
3 : 10毫秒到200毫秒的級(jí)別,放在10ms的定時(shí)器中就好了。
4:大于200毫秒的級(jí)別,直接放主程序中就行。
剛做單片機(jī)的時(shí)候,也有你同樣的問(wèn)題,假如定義了2個(gè)定時(shí)器,分別是定時(shí)器0和定時(shí)器1,定時(shí)器0是1ms的,定時(shí)器1是10ms的。在系統(tǒng)時(shí)鐘運(yùn)行到第10ms時(shí)候,到底是先觸發(fā)第10個(gè)定時(shí)器0,還是第一個(gè)定時(shí)器1?按照優(yōu)先級(jí),應(yīng)該是理解為先觸發(fā)定時(shí)器0,再觸發(fā)定時(shí)器1。其實(shí)是同時(shí)觸發(fā)的,只是硬件會(huì)先執(zhí)行定時(shí)器0里面的程序,再執(zhí)行定時(shí)器1里面的程序。 那么值得注意的問(wèn)題來(lái)了,如果定時(shí)器0執(zhí)行的時(shí)間消耗了900ns會(huì)怎么樣呢?那么留給定時(shí)器1的資源時(shí)長(zhǎng)就只有1ms了。這樣,很容易就會(huì)跑飛。 |
|