????//event?處理 ????if(events?&?GET_RFID_EVT)?{ ????????rfid_data?=?getRFID();
請(qǐng)教:在TMOS的event中調(diào)用一個(gè)函數(shù),判斷如果1s后還沒(méi)有返回值則關(guān)閉這個(gè)event,啟動(dòng)另外一個(gè)event。怎樣實(shí)現(xiàn)比較方便?
????//event?處理 ????if(events?&?GET_RFID_EVT)?{ ????????rfid_data?=?getRFID();
請(qǐng)教:在TMOS的event中調(diào)用一個(gè)函數(shù),判斷如果1s后還沒(méi)有返回值則關(guān)閉這個(gè)event,啟動(dòng)另外一個(gè)event。怎樣實(shí)現(xiàn)比較方便?
調(diào)用tmos_start_task任務(wù)只會(huì)執(zhí)行一次,就不需要關(guān)閉任務(wù)了,可以在你A任務(wù)中加個(gè)判斷:有返回值,則使用tmos_start_task調(diào)用B任務(wù)。
tmos有設(shè)定超時(shí)的方法嗎?我在A任務(wù)中調(diào)用這個(gè)getRFID()函數(shù),如果等不到有返回值,tmos會(huì)一直卡在這里
沒(méi)有超時(shí)的設(shè)置,tmos本身并不會(huì)導(dǎo)致你卡在任務(wù)里,你調(diào)用的函數(shù)是否有卡住的可能,另外tmos任務(wù)是否按照例程寫(xiě)。
謝謝答復(fù)。再請(qǐng)教一個(gè)定時(shí)器的問(wèn)題:
在main()中配置中斷:
????TMR0_TimerInit(FREQ_SYS/1);?????????//?設(shè)置定時(shí)時(shí)間1s ????TMR0_ITCfg(ENABLE,?TMR0_3_IT_CYC_END);?//?中斷配置:定時(shí)-周期結(jié)束
在TMOS的一個(gè)event中開(kāi)啟:
PFIC_EnableIRQ(TMR0_IRQn);?//開(kāi)啟定時(shí)器0
然后再另外一個(gè)event中關(guān)閉:
PFIC_DisableIRQ(TMR0_IRQn);
這個(gè)定時(shí)器我只希望運(yùn)行一次(定時(shí)1次),這樣做法是正確的嗎?
測(cè)試打印發(fā)現(xiàn)關(guān)閉失敗,這個(gè)定時(shí)器一直在響應(yīng)。
如果只想定時(shí)一次,那么可以在定時(shí)器中斷里面關(guān)中斷就可以了,你上述的方法也可以,不過(guò)可以加點(diǎn)log看看關(guān)閉定時(shí)器的任務(wù)是否運(yùn)行了,后面是否又開(kāi)啟了,導(dǎo)致沒(méi)關(guān)閉。
使用在定時(shí)器中斷里面關(guān)中斷的方式,已解決,感謝!