做編程的網(wǎng)站有哪些方面廣告公司注冊
嵌入式C語言–GPT通用定時(shí)器
嵌入式C語言--GPT通用定時(shí)器
- 嵌入式C語言--GPT通用定時(shí)器
- 一. GPT基本概念
- 二. GPT的作用
- 三. GPT通道的四個(gè)狀態(tài)
- 四. Continuous/One-Shot模式
- 3.1)Continuous模式
- 3.2)One-Shot模式
一. GPT基本概念
GPT即General Purpose Timer(s) ,通用定時(shí)器模塊,該模塊通過使用硬件定時(shí)器通道為操作系統(tǒng)或其他需要定時(shí)器功能的模塊提供定時(shí)功能,通常可提供從微秒級到毫秒級的定時(shí)時(shí)鐘功能。
二. GPT的作用
1)啟動(dòng)及停止硬件定時(shí)器;
2)獲取定時(shí)器已過去及剩余的定時(shí)器數(shù)值;3)控制定時(shí)器的定時(shí)數(shù)值;
4)控制時(shí)間觸發(fā)的中斷
總而言之,其作用就是一個(gè)定時(shí)器,為需要的模塊提供定時(shí)功能
例如對于需要進(jìn)行周期性處理的動(dòng)作通??赏ㄟ^定時(shí)器功能來實(shí)現(xiàn)。
定時(shí)器一旦啟動(dòng)后,將持續(xù)進(jìn)行計(jì)數(shù),一旦到達(dá)所設(shè)置的定時(shí)值時(shí)將會(huì)以中斷的方式予以告知。
三. GPT通道的四個(gè)狀態(tài)
GPT通道的狀態(tài)有:Initialized/Running/Stopped/Expired四個(gè)狀態(tài)
1)Initialized
在GPT Driver初始化完成后狀態(tài)為Initialized狀態(tài);
2)Running
調(diào)用Gpt_Startimer()后狀態(tài)變?yōu)镽unning,開始計(jì)時(shí);
3)Expired
計(jì)時(shí)達(dá)到目標(biāo)后變?yōu)镋xpired
4)Stopped
調(diào)用Gpt_Stoptimer()后狀態(tài)變?yōu)镾topped
四. Continuous/One-Shot模式
GPT根據(jù)計(jì)時(shí)模式可以分為Continuous及One-Shot模式,其中Continuous在開始計(jì)時(shí)達(dá)到設(shè)定時(shí)間后會(huì)自動(dòng)開始下一輪計(jì)時(shí),但對于One-Shot模式則需要調(diào)用API Gpt_Startimer()重新開始定時(shí)。根據(jù)不同的使用場景在MCAL中進(jìn)行靈活配置。
3.1)Continuous模式
周期性定時(shí)器(continuous):定時(shí)時(shí)間終止時(shí),定時(shí)器會(huì)自動(dòng)重新開始,若產(chǎn)生中斷的話,每隔一個(gè)定時(shí)周期就會(huì)產(chǎn)生一次。
到達(dá)目標(biāo)時(shí)間后,計(jì)時(shí)器再次以值“0”繼續(xù)運(yùn)行。
Continuous模式采集過程如下:
1)調(diào)用Gpt_EnableNotification() API使能對應(yīng)通道的中斷服務(wù)函數(shù);
2)調(diào)用Gpt_Startimer()開始定時(shí);
3)在GPT Timer達(dá)到設(shè)定時(shí)間后會(huì)進(jìn)入對應(yīng)的中斷服務(wù)函數(shù),同時(shí)開啟下一輪的定時(shí),如此循環(huán)往復(fù);
4)當(dāng)不需要再繼續(xù)定時(shí)調(diào)用Gpt_Stoptimer(),關(guān)閉定時(shí)器,停止計(jì)時(shí)。
3.2)One-Shot模式
單次性定時(shí)器(one-shot):定時(shí)時(shí)間終止時(shí),定時(shí)器中止不再計(jì)數(shù),若產(chǎn)生中斷的話,也僅產(chǎn)生一次中斷。one shot mode timer
One-Shot模式采集過程相對比較直白,即觸發(fā)一次定時(shí)就工作一次,下一次需要重新去啟動(dòng),其大致工作過程如下:
1)調(diào)用Gpt_EnableNotification() API使能對應(yīng)通道的中斷服務(wù)函數(shù);
2)調(diào)用Gpt_Startimer()開始定時(shí);
3)在GPT Timer達(dá)到設(shè)定時(shí)間后會(huì)進(jìn)入對應(yīng)的中斷服務(wù)函數(shù);
4)當(dāng)需要再次定時(shí)時(shí)重新調(diào)用Gpt_Startimer()開始定時(shí);
4)當(dāng)不需要再繼續(xù)定時(shí)調(diào)用Gpt_Stoptimer(),關(guān)閉定時(shí)器,停止計(jì)時(shí)。