IMX6ULL之GPT定时器高精度延时实验说明一

一.   延时函数

之前的延时函数是采用空指令执行来实现,延时肯定不准确!

当我们修改了 IMX6ULL的主频以后,采用空指令的延时函数就不准了!因此,我们需要高精度的延时函数,而且不随着主频的变化而改变。

本文我们就来学习一下,如何使用硬件定时器来实现高精度延时。

I.MX6ULL除了有之前介绍的 EPIT定时器,还有GPT定时器

二.   GPT定时器

1.  GPT 定时器

GPT 定时器 (即 General Purpose Timer), 是一个 32 位向上定时器 ( 也就是从 0X00000000 开始向上递增计数 ) GPT 定时
器也可以跟一个值进行比较,当计数器值和这个值相等的话就发生比较事件,产生比较中断。

GPT定时器有如下特点:

(1)  GPT定时器是 32位向上计数器。

(2)  GPT定时器有捕获的功能。

(3) GPT定时器支持比较输出或中断功能。

(4) GPT定时器有一个12位的分频器。

(5) GPT定时器的时钟源可以选择,这里我们选择 ipg_clk=66MHZ 作为 GPT的时钟源。

GPT定时器的工作模式:

GPT定时器有两种工作模式:restart模式 和 free-run模式。

restart模式:

定时器计数值和比较寄存器OCR的值相等时,定时器就会重新从0开始计时。

注意!只有比较通道1才有此功能。

free-run模式:

0 开始一直加到 0xffffffff ,然后重新从 0 开始,周而复始。三个输出比较通道都适用。

2.  GPT定时器的寄存器

GPT_CR寄存器

bit 0: GPT使能位,为 0的时候关闭 GPT,为 1的时候使能 GPT。

Bit 1:GPT定时器计数器的初始值

为 0 的时候表示GPT定时器计数值默认为上次关闭的时候遗留的值,为 1则计数值为 0。

Bit8~6:为时钟源的选择,设置为 1,表示 GPT时钟源为 ipg_clk=66MHz。

bit 9: 设置GPT定时器工作模式

为 0 的时候工作在 restart模式,为 1时则工作在 free-run模式。

Bit 15:软件复位。

GPT_PR寄存器bit11~0 为分频值,可设置 0-4095,表示 1~4096分频。

GPT_SR寄存器即状态寄存器):bit 5 表示溢出发生,bit4 和 bit3 分别为输入通道 2和 1的捕获中断标志位。Bit2~0,也就是 OF3~OF1 为比较中断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值