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芯片内部的硬件模块。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46635880/article/details/109021468
今日推荐