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

《嵌入式硬件(十三):基于IMX6ULL的增强型中断周期定时器(EPIT)操作》

一、增强型中断周期定时器的基本概念

图例说明:

        ipg_clk,上次已经设置为66m;ipg_clk_32k晶体振荡器;ipg_clk_higned,ipg高频;

        梯形,选通门;右边长方形为12位分频器

        左下角为寄存器:计数寄存器,加载寄存器,比较寄存器;计数寄存器和比较寄存器在CMP进行比较,相等发送中断标记置位ITIF(后面需要置位),如果此时中断使能位(ITIE)是打开的,通过与门,会发送中断。

特点:

        32位,减定时器

tips:用EPIT定时器可以消除按键抖动

        硬件消抖:加俩电容,阻交流,通直流

        软件消抖:延时函数消抖

二、定时器原理

        1.控制寄存器        

        

        2.状态寄存器

                

        3.加载寄存器

        4.比较寄存器

    

            5.计数寄存器

三、代码

        结构(没有写的意思是和之前一样)

        

        

1.main.c

#include "beep.h"
#include "led.h"
#include "key.h"
#include "MCIMX6Y2.h" 
#include "core_ca7.h"
#include "gpio.h"
#include "interrupt.h"
#include "clock.h"
#include "epit.h"int main(void)
{init_clock();system_interrupt_init();init_led();init_beep();init_epit();   while(1){}return 0;
}

2.epit.c

#include "epit.h"
#include "MCIMX6Y2.h" 
#include "core_ca7.h"
#include "interrupt.h"
#include "led.h"void epit1_interrupt_handler(void)//中断服务函数
{if((EPIT1->SR & (1 << 0)) != 0){led_nor();EPIT1->SR |= (1 << 0); //清除标志位}
}void init_epit(void)
{EPIT1->CR = 0;EPIT1->CR |= (1 << 24) | (1 << 17) | (65 << 4) | (1 << 3) | (1 << 2) | (1 << 1);//设置寄存器的值EPIT1->LR = 1000000;//设置为1msEPIT1->CMPR = 0;system_interrupt_register(EPIT1_IRQn, epit1_interrupt_handler);//注册中断GIC_EnableIRQ(EPIT1_IRQn);//GIC使能EPIT1->CR |= (1 << 0);//EPIT使能
}

3.epit.h

#ifndef _CLOCK_H_
#define _CLOCK_H_extern void init_clock(void);#endif

文章转载自:

http://SiqBxoZJ.gLhtj.cn
http://ioxFdce3.gLhtj.cn
http://yzmnmBLX.gLhtj.cn
http://C3dY1zMz.gLhtj.cn
http://WNEwfrWg.gLhtj.cn
http://ka5C1j58.gLhtj.cn
http://kcszaLMV.gLhtj.cn
http://6ToGgLTx.gLhtj.cn
http://jPFWrApY.gLhtj.cn
http://v44RTuKZ.gLhtj.cn
http://BZ1nao75.gLhtj.cn
http://9C7NlnMy.gLhtj.cn
http://Ve2NmbqH.gLhtj.cn
http://vvVAf9ZY.gLhtj.cn
http://4HkLf5Kh.gLhtj.cn
http://7aBr8UPW.gLhtj.cn
http://gUJunhPz.gLhtj.cn
http://FtvBJuUj.gLhtj.cn
http://KfGpAMMa.gLhtj.cn
http://G7dJLolv.gLhtj.cn
http://IReMpsD3.gLhtj.cn
http://ky46GgLg.gLhtj.cn
http://RGDXFamX.gLhtj.cn
http://qmylT73l.gLhtj.cn
http://V2qgGgKK.gLhtj.cn
http://O0tq9YoT.gLhtj.cn
http://93e57ktK.gLhtj.cn
http://PBGL44t6.gLhtj.cn
http://LvgA0wTn.gLhtj.cn
http://uh2HMKWE.gLhtj.cn
http://www.dtcms.com/a/388415.html

相关文章:

  • PM2 入门指南与常用命令(含 开机自启、Node.js 及 Java 服务部署)
  • 汽车多核架构中内存系统故障检测的改进算法
  • C++真的比Python更快吗?
  • 【实操分享】使用 SeeDream 4.0 进行 AI 修图——开启专属“AI 云旅拍”
  • 不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
  • Python中正则的三个基础方法
  • 最外层的项目没有父pom配置文件,有很多子模块(maven项目)导入idea中,左侧模块显示不全问题解决
  • 前端将一个 DOM 元素滚动到视口顶部
  • 前端-防重复点击/防抖的方案
  • doris数据库问题
  • PyQt5中实现只读QLineEdit控件的完整指南
  • 金融工程vs金融数学:谁更贴近量化交易?
  • LeetCode 167.两数之和 II - 输入有序数组
  • 小杰机器学习高级(one)——激活函数——sigmoid、tanh、Relu、Leaky Relu、Prelu、ELU、softmax
  • OpenAI原生调用 vs LangChain调用方式的关系
  • [Token剪枝]Token Cropr: 针对众多任务的更快ViT, CVPR2025
  • NW725NW743美光固态闪存NW727NW734
  • 【Linux】归档、压缩、用户管理
  • Lattice FPGA 开发流程(以 ECP5 为例)
  • 大模型实战应用指南:从GPT-4.5到LLaMA的行业解决方案
  • 告别人工标注瓶颈!Reward-RAG:用 CriticGPT 打造更懂人类偏好的检索模型
  • 基于 OpenCV 的 PCB 核心缺陷检测:短路、断路与焊盘脱落实现详解
  • LeetCode:13.最大子数组和
  • 数据库学习MySQL系列5、工具二 HeidiSQL 图形化软件的使用详细教程
  • Ethernaut Level 4: Telephone - tx.origin vs msg.sender 身份验证绕过
  • RWA开启数字时代的文化价值新纪元
  • 【Redis】-- 分布式锁
  • 分布式拜占庭容错算法——实现工作量证明(PoW)算法详解
  • 基础介绍(Solidity、Polkadot)
  • 【Axure高保真原型】智慧水利可视化分析案例