imx6ul 12 之GPT精准延时

一、GPT定时器简介

以前的延时函数采用空指令来实现,延时不准确且浪费cpu性能。当修改了6ull的主频以后,采用空指令延时函数就不准了。
因此需要一个高精度的延时函数,并且不随着主频的变化而改变。
stm32 使用 SYSTICK 这个硬件定时器来实现高精度延时,因此可以在6ull 里面使用硬件定时器来实现高精度延时
本次实验使用 6ull 的 GPT 定时器来实现高精度延时。


GPT 是 32位向上计数器
GPT定时器具有捕获的功能。
GPT定时器支持比较输出或者中断功能
GPT具有12位的分频器。
GPT时钟源选择 ipg_clk = 66Mhz ,作为GPT的时钟源。
GPT定时器有两种工作模式,restart和free-run。restart模式下,定时器计数值只能和OCR1相比较,相等的话,就会从0开始重新计时。free-run模式可以使用三个输出比较通道,从0 一直加到 0xffff ffff,然后重新从 0 开始计时。


  • GPT_CR:
    bit0为 GPT 使能位,为0关闭GPT,为1打开GPT
    bit1确定GPT计数器的初始值,为0表示初始值时上次关闭时的值,为1表示从0
    bit6 ~ 8:时钟源的选择,设置为1,选择时钟源为 ipg_clk = 66 Mhz
    bit9:设置GPT定时器工作模式。为0,restart mode;为1,工作在 free-run mode。这里设置为restart
    bit15:软件复位,为1处于复位状态,为0不处于
  • GPT_PR:
    bit11 ~ 0 :表示分频值,可设置 0 ~ 0xfff,对应1分频 和 4096分频
  • GPT_SR:
    bit2 ~ 0 :也就是OF3 ~ OF1的比较中断标志位
    bit4和bit3:分别为输入通道2和1捕获中断标志位
    bit5:为1表示溢出发生
  • GPT_IR:
    中断使能寄存器:GPT定时器有两个,可产生三种中断:捕获中断,比较中断,溢出中断

二、GPT定时器使用

只要你采用了free-run模式,往三个比较寄存器里写了值,并使能了中断,那么在使能了GPT后,就可以运行(一定要在中断处理函数的末尾清除中断标志)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值