当前位置: 首页 > article >正文

EPIT定时器实验(一)

EPIT定时器简介

EPIT:Enhanced Periodic Interrupt Timer,直译就是增强的周期中断定时器,它主要完成周期性中断定时的。
STM32里面的定时器有很多其它功能,比如输入捕获、PWM输出等,但是I.MX6U的的EPIT定时器只是完成周期性中断定时的,仅此一项功能。至于输入捕获、PWM 输出等这些功能,I.MX6U 由其它的外设来完成。

EPIT是一个32位定时器,在处理器几乎不用介入的情况下提供精准的定时中断,软件使能以后EPIT就会开始运行。

  1. 时钟源可选的32位向下计数器。
  2. 12位的分频值。
  3. 当计数器和比较值相等的时候产生中断。

在这里插入图片描述
EPIT各部分功能如下:

  1. 多路选择器,用来选择EPIT定时器的时钟源,EPIT共有3个时钟源可选择,ipg_clk、ipg_clk_32k、ipg_clk_highfre。
  2. 12位的分频器,对时钟源进行分频,12位对应的值是04095,对应着14096分频。
  3. 经过分频的时钟进入到EPIT内部,在EPIT内部有三个重要的寄存器:计数寄存器(EPIT_CNR)、加载寄存器(EPIT_LR)和比较寄存器(EPIT_CMPR),这3个寄存器都是32位的。EPIT是一个向下计数器,也就是说给它一个初值,它就会从这个给定的初值开始递减,直到减到为0,计数寄存器里面保存的就是当前的计数值。如果EPIT工作在set-forget模式下,当计数器寄存器里面的值减少到0,EPIT就会重新从加载寄存器读取数值到计数寄存器里面,重新开始向下计数。比较寄存器里面保存的数值用于和计数寄存器里面的计数值比较,如果相等的话就会产生一个比较事件。
  4. 比较器
  5. EPIT可以设置引脚输出,如果设置了的话就会通过指定的引脚输出信号。
  6. 产生比较中断,也就是定时中断。

EPIT有两种工作模式:set-and-forget和free-running,这两个工作模式的区别如下:

  • 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中获取数据。

在这里插入图片描述

  • CLKSRC:EPIT的时钟源选择位,为0的时候关闭时钟源,1的时候选择Peripheral 时钟(ipg_clk),为 2 的时候选择 High-frequency 参考时钟(ipg_clk_highfreq),为 3 的时候选择 Low-frequency 参考时钟(ipg_clk_32k)。在本例程中,我们设置为 1,也就是选择 ipg_clk作为 EPIT 的时钟源,ipg_clk=66MHz。
  • PRESCALAR:EPIT时钟源分频值,可设置范围 0~4095,分别对应 1~4096 分频。
  • RLD:EPIT工作模式:EPIT 工作模式,为 0 的时候工作在 free-running 模式,为 1 的时候工作在 set-and-forget 模式。
  • OCIEN:比较中断使能位,为0的时候关闭比较中断,为1的时候使能比较中断。
  • ENMOD:设置计数器初始值,为0时计数器初始值等于上次关闭EPIT定时器以后计数器里面的值,为1的时候来源于加载计数器。
  • EN(bit0):EPIT 使能位,为 0 的时候关闭 EPIT,为 1 的时候使能 EPIT。

在这里插入图片描述
EPITx_SR只有一个位有效,那就是OCIF,这个位是比较中断标志位,为0的时候表示没有比较事件发生,为 1 的时候表示有比较事件发生。
当比较中断发生以后需要手动清除此位,此位是写1清零的。


http://www.kler.cn/a/15543.html

相关文章:

  • Infisical开源密钥管理平台实战指南
  • JAVA-链表
  • ARM 汇编指令
  • 场景营销在企业定制开发 AI 智能名片 S2B2C 商城小程序中的应用与价值
  • 十:详解HTTP的请求行
  • Element-ui Select选择器自定义搜索方法
  • 区块链学习一(FISCO BCOS部署控制台部署第一个HelloWorld)
  • 射频电路设计常见问题以及经验总结
  • 【MATLAB图像处理实用案例详解(12)】——利用BP神经网络实现图像压缩
  • redis 过期消息订阅实现(java实现)
  • Java数组的学习(基础)
  • [ 云原生 | Docker ] 构建高可用性的 SQL Server:Docker 容器下的主从同步实现指南
  • 带你看懂 Vue Hook和React Hook
  • Java工程项目管理系统源码 工程项目源码
  • Prometheus 监控系统安装
  • 5.Java中抽象类和接口
  • 一曲微茫度余生 ——川剧《李亚仙》唱响香港西九戏曲中心
  • bagging(main: RF随机森林) 回归器
  • 神奇的饼状图:如何用最简单的方式呈现复杂的数据
  • layui入门使用文档(包含几个重要的组件)
  • mysql语句高级用法使用记录和sql_mode=only_full_group_by错误解决
  • LeetCode笔记:Weekly Contest 342
  • 快手智能处理与编码算法产品化之路
  • 7-4 多态练习-计算面积
  • 如何实现U盘低格?这样操作快速搞定!
  • [python][vpython]用vpython实现小球砸弹簧代码