1. 程式人生 > 實用技巧 >【北京迅為】i.MX6ULL終結者GPT定時器延時原理及原理分析

【北京迅為】i.MX6ULL終結者GPT定時器延時原理及原理分析

文章目錄

1 GPT定時器延時原理

我們在上一章節介紹了GPT定時器的結構框架,首先時鐘源我們可以從五路里面選取任意一路,在我們本例程中,我們選擇的是ipg_clk,該時鐘的頻率是66MHz,然後時鐘源通過一個12位的分頻器,分頻以後進入32位的GPT定時器內部。我們選擇分頻引數為66,那麼進入GPT定時器的頻率就是1MHz了。1MHz的週期是1us,也就是說GPT的計數器每加一,就是經過了1us,如果累計加了20個數,就是20us。所以我們可以通過讀取GPT計數器中的數值累加的個數,就知道經過的時間了。比如我們現在要延時50us,那麼我們進入到延時函式,讀取到GPT計數器的當前計數為100,那麼當GPT計數器中的值變成200的時候(200-100=100個數),我們就知道延時經過了100us。

我們在前面介紹GPT計數器GPTx_CNT是個32位的暫存器,那麼他表示的最大值是0xffffffff,換成10進製表示是4294967295,也是就是從0開始累加計數,到計數器溢位的時間是4294967295us,所以我們在延時函式中要考慮到溢位的處理。

下面我們來看下具體的操作流程:
1.首先是復位GPT1定時器
2.然後是設定GPT1定時器的時鐘源,分頻值等引數
3.然後設定輸出最大比較數值
4.然後使能GPT1定時器
5.然後實現延時函式(通過讀取GPT1定時器的計數器值,計數器值每增加1,就是延時了1us)。

2 原理分析

本例程用到的硬體資源包括LED,i.MX6 ULL內部的GPT1定時器,由於LED原理我們在前面例程中有分析過,這裡就不再詳細分析了。GPT1定時器屬於i.MX6 ULL晶片內部的硬體模組。在這裡插入圖片描述