当前位置: 代码迷 >> 综合 >> I.MX6UL裸机开发(七)—— EPIT定时器
  详细解决方案

I.MX6UL裸机开发(七)—— EPIT定时器

热度:66   发布时间:2024-01-30 13:33:21.0

1、EPIT定时器简介
(1)EPIT的全称是:Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期中断定时的。I.MX6U的EPIT定时器只是完成周期性中断定时的,
没有输入捕获、PWM输出等功能。
(2)EPIT是一个32位定时器,在处理器几乎不用介入的情况下提供精准的定时中断,软件使能以后EPIT就会开始运行,EPIT定时器有如下特点:
①、时钟源可选的32位向下计数器。
②、12位的分频值。
③、当计数值和比较值相等的时候产生中断。
(3)EPIT定时器有两种工作模式:
①、set-and-forget模式:EPITx_CR(x=1,2)寄存器的RLD位置1的时候EPIT工作在此模式下,在此模式下EPIT的计数器从加载寄存器EPITx_LR中获取初始值,不能直接向计数
器寄存器写入数据。不管什么时候,只要计数器计数到0,那么就会从加载寄存器EPITx_LR中重新加载数据到计数器中,周而复始。
②、free-running模式:EPITx_CR寄存器的RLD位清零的时候EPIT工作在此模式下,当计数器计数到0以后会重新从0xFFFFFFFF开始计数,并不是从加载寄存器EPITx_LR中获取
数据。
(4)EPIT寄存器
①、EPITx_CR:配置寄存器
②、EPITx_SR:状态寄存器
③、EPITx_LR:加载寄存器
④、EPITx_CMPR:比较寄存器
⑤、EPITx_CNR:计数寄存器

2、EPIT配置步骤:
(1)设置EPIT1的时钟源
设置寄存器EPIT1_CR寄存器的CLKSRC(bit25:24)位,选择EPIT1的时钟源。
(2)设置分频值
设置寄存器EPIT1_CR寄存器的PRESCALAR(bit15:4)位,设置分频值。
(3)设置工作模式
设置寄存器EPIT1_CR的RLD(bit3)位,设置EPIT1的工作模式。
(4)设置计数器的初始值来源
设置寄存器EPIT1_CR的ENMOD(bit1)位,设置计数器的初始值来源。
(5)使能比较中断
设置寄存器EPIT1_CR的OCIEN(bit2)位,使能比较中断。
(6)设置加载值和比较值
设置寄存器EPIT1_LR中的加载值和寄存器EPIT1_CMPR中的比较值,通过这两个寄存器就可以决定定时器的中断周期。
(7)EPIT1中断设置和中断服务函数编写
使能GIC中对应的EPIT1中断,注册中断服务函数,如果需要的话还可以设置中断优先级。最后编写中断服务函数。
(8)使能EPIT1定时器
配置好EPIT1以后就可以使能EPIT1了,通过寄存器EPIT1_CR的EN(bit0)位来设置。

  相关解决方案