rt-thread的定時(shí)器的基本工作原理在RT-Thread定時(shí)器模塊維護(hù)兩個(gè)重要的全局變量,一個(gè)是當(dāng)前系統(tǒng)的時(shí)間rt_tick(當(dāng)硬件定時(shí)器中斷來(lái)臨時(shí),它將加1),另一個(gè)是定時(shí)器鏈表rt_timer_list,系統(tǒng)中新創(chuàng)建的定時(shí)期都會(huì)被以排序的方式插入到rt_timer_list(硬件定時(shí)器模式下使用)鏈表中,rt_timer_list的每個(gè)節(jié)點(diǎn)保留了一個(gè)定時(shí)器的信息,并且在這個(gè)節(jié)點(diǎn)加入鏈表時(shí)就計(jì)算好了產(chǎn)生時(shí)間到達(dá)時(shí)的時(shí)間點(diǎn),即tick,在rt-thread系統(tǒng)中如果采用軟件定時(shí)器模式,則存在一定時(shí)器線程rt_thread_timer_entry,不斷獲取當(dāng)前TICK值并與定時(shí)器鏈表rt_timer_list上的定時(shí)器對(duì)比判斷是否時(shí)間已到,一旦發(fā)現(xiàn)就調(diào)用對(duì)應(yīng)的回調(diào)函數(shù),即事件處理函數(shù)進(jìn)行處理,而如果采用硬件定時(shí)器管理模式的話,則該檢查過(guò)程放到系統(tǒng)時(shí)鐘中斷例程中進(jìn)行處理,此時(shí),是不存在定時(shí)器線程的。如下圖:注:如果采用軟件定時(shí)器軟件定時(shí)器,則該定時(shí)器鏈表為rt soft_timer_list。
標(biāo)簽:
rtthread
定時(shí)器
上傳時(shí)間:
2022-06-25
上傳用戶:jason_vip1