嵌入式Linux裸机开发(六)EPIT 定时器

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 介绍
  • 配置过程


前言

前面学的快崩溃了,这也太底层了,感觉学好至少得坚持一整年,我决定这节先把EPIT学了,下面把常见三种通信大概学一下,直接跳过其他的先学移植了,有些太多了内容。


介绍

EPIT(Enhanced Periodic Interrupt Timer)增强周期中断定时器,EPIT是专门完成此功能的,PWM、输入捕获那些事其他外设完成的。

EPIT是32位的向下计数的定时器,有12位的分频,当计数值等于比较值的时候就产生中断

在这里插入图片描述
EPIT时钟源可由多路选择器选择,ipg_clk、 ipg_clk_32k 和 ipg_clk_highfreq。
分频器是12位的,值0-4095对应1-1096(终于明白HAL配置32的时候为啥分频时要减1)。
计数寄存器(EPIT_CNR):32位向下递减的寄存器,保存当前递减到几(直到0)。
加载寄存器(EPIT_LR):set-and-forget 模式,计数器值减少到0,将从加载寄存器里面重新加载。
比较寄存器(EPIT_CMPR):和计数寄存器比较,如果相等就触发中断。

EPIT两种工作模式:
set-and-forget 模式:EPITx_CR(x=1, 2)寄存器的 RLD 置1 ,计数器从加载寄存器 EPITx_LR 中获取初始值,不能直接写。
free-running 模式:EPITx_CR 寄存器的 RLD 为零,计数器计数到 0以后会重新从 0XFFFFFFFF开始计数,不从加载寄存器 EPITx_LR中获取。

EPITx_CR完成各种配置,具体参考手册的寄存器:
在这里插入图片描述
寄存器 EPITx_SR只有一个位有效,OCIF(bit0),中断比较标志位,为0没有中断,为1中断发生(比较事件),发生后需要手动置0
在这里插入图片描述

配置过程

  • 设置时钟源(EPIT1_CR 寄存器的 CLKSRC)
  • 设置分频器(EPIT1_CR 寄存器的 PRESCALAR)
  • 设置工作模式(EPIT1_CR 的 RLD)
  • 设置计数器的初始值来源(EPIT1_CR 的 ENMOD):0来自上次关闭定时器的计数器值,1加载寄存器
  • 使能比较中断(EPIT1_CR 的 OCIEN)
  • 设置加载值和比较值(EPIT1_LR 中的加载值和 EPIT1_CMPR 中的比较值)
  • EPIT1 中断设置和中断服务函数编写(使能 GIC 中对应的 EPIT1 中断,注册中断服务函数,设置中断优先级,编写中断服务函数)
  • 使能 EPIT1 定时器(EPIT1_CR 的 EN)

在这里插入图片描述
Tout = ((frac +1 )* value) / Tclk;分频值是12位的,倒计数值是32位的
时钟源 ipg_clk的Tclk为66MHz。
Tout: EPIT1 的溢出时间(单位 S)。
Tclk: EPIT1 的输入时钟频率(单位 Hz)。

函数 epit1_irqhandler 是 EPIT1 的中断处理函数,此函数先读取 EPIT1_SR 寄存器,判断当前的中断是否为比较事件,在退出中断处理函数的时候需要清除中断标志位
在这里插入图片描述
主函数定义了500ms的中断:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页游戏的开发框架

网页游戏开发通常使用不同的开发框架和技术栈,以创建各种类型的游戏,从简单的HTML5游戏到复杂的多人在线游戏(MMO)等。以下是一些常见的网页游戏开发框架和它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司&a…

python安装geopy出现错误

python: 安装geopy出现错误 错误信息: 解决办法:再试一次 居然成功了,就是说,也不知道为什么

生产级Stable Diffusion AI服务部署指南【BentoML】

在本文中,我们将完成 BentoML 和 Diffusers 库之间的集成过程。 通过使用 Stable Diffusion 2.0 作为案例研究,你可以了解如何构建和部署生产就绪的 Stable Diffusion 服务。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 Stable Diffusion 2.0 …

uniapp微信小程序自定义封装分段器。

uniapp微信小程序自定义封装分段器。 话不多说先上效果 这里我用的是cil框架 vue3 下面贴代码 组价代码&#xff1a; <template><view class"page"><viewv-for"(item, index) in navList":key"index"click"changeNav(ind…

docker之Harbor私有仓库

目录 一、什么是Harbor 二、Harbor的特性 三、Harbor的构成 1、六个组件 2、七个容器 四、私有镜像仓库的上传与下载 五、部署docker-compose服务 把项目中的镜像数据进行打包持久数据&#xff0c;如镜像&#xff0c;数据库等在宿主机的/data/目录下&#xff0c; 一、什么…

idea将jar包deploy到本地仓库

1、pom.xml文件引入配置&#xff0c;如下参考&#xff1a; <distributionManagement><snapshotRepository><id>maven-snapshots</id><url>http://nexus1.coralglobal.cn/repository/maven-snapshots/</url></snapshotRepository><…

Maven 构建配置文件

目录 构建配置文件的类型 配置文件激活 配置文件激活实例 1、配置文件激活 2、通过Maven设置激活配置文件 3、通过环境变量激活配置文件 4、通过操作系统激活配置文件 5、通过文件的存在或者缺失激活配置文件 构建配置文件是一系列的配置项的值&#xff0c;可以用来设置…

Talk | ACL‘23 杰出论文,MultiIntruct:通过多模态指令集微调提升VLM的零样本学习

本期为TechBeat人工智能社区第536期线上Talk&#xff01; 北京时间10月11日(周三)20:00&#xff0c;弗吉尼亚理工大学博士生—徐智阳、沈莹的Talk已准时在TechBeat人工智能社区开播&#xff01; 他们与大家分享的主题是: “通过多模态指令集微调提升VLM的零样本学习”&#xff…

做一个物联网的后台程序与数据库设计

数据库部分 先设计一个简单的数据库。表结构如下: sql语句如下: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ---------------------------- -- Table structure for realtimedata -- ---------------------------- DROP TABLE IF EXISTS `realtimedata`

Godot快速精通-从看懂英文文档开始-翻译插件

视频教程地址&#xff1a;https://www.bilibili.com/video/BV1t8411q7hw/ 大家好&#xff0c;我今天要和大家分享的是如何快速精通Godot&#xff0c;众所周知&#xff0c;一般一个开源项目都会有一个文档&#xff0c;对于有一定基础或者是理解能力强的同学&#xff0c;看文档比…

跨境电商独立站,无货源,轻松卖全球~

在互联网全球化的现在&#xff0c;跨境电商已经成为越来越多企业和个人的选择。但运营过程中总会遇到各种各样的问题&#xff0c;比如库存压力大、语言沟通困难、物流费用高且慢等等。特别是在当下印尼电商禁止令出台&#xff0c;很多在各大电商平台的卖家更是苦不堪言。 因为市…

机器学习基础之《回归与聚类算法(1)—线性回归》

一、线性回归的原理 1、线性回归应用场景 如何判定一个问题是回归问题的&#xff0c;目标值是连续型的数据的时候 房价预测 销售额度预测 贷款额度预测、利用线性回归以及系数分析因子 2、线性回归定义 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(…

翻译docker官方文档(残缺版)

Build with docker(使用 Docker 技术构建应用程序或系统镜像) Overview (概述) 介绍&#xff08;instruction&#xff09; 层次结构&#xff08;Layers&#xff09; The order of Dockerfile instructions matters. A Docker build consists of a series of ordered build ins…

数据挖掘实战(3):如何对比特币走势进行预测?

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法

深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法 1、最近邻插值法 1、最近邻插值法 *最邻近插值&#xff1a;将每个目标像素找到距离它最近的原图像素点&#xff0c;然后将该像素的值直接赋值给目标像素 优点&#xff1a;实现简单&#xff0c;计算速度快缺点&…

【C++】【自用】STL六大组件:算法

文章目录 &#x1f53a;sortstable_sort&#x1f53a;reverse&#x1f53a;swap&#x1f53a;find&#x1f53a;max/min&#x1f53a;next_permutation/prev_permutation 全排列binary_searchlower_bound/upper_bound 求下界和上界set_union/set_intersection/set_difference 求…

JNI中调用Java函数

文章目录 一、JNI 注册二、JNI 调用 Java 函数1、实例2、总结3、参考 三、JNI 数据传递四、JNA五、图像传递 一、JNI 注册 JNI 分成静态注册和动态注册 静态注册 cpp 实现 JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *env, jobject…

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记

0. 内容 1. VIO回顾 整个视觉前端pipeline回顾&#xff1a; 两帧图像&#xff0c;可提取特征点&#xff0c;特征匹配&#xff08;描述子暴力匹配或者光流&#xff09;已知特征点匹配关系&#xff0c;利用几何约束计算relative pose([R|t])&#xff0c;translation只有方向&…

Linux Centos7 下使用yum安装的nginx平滑升级

1. 查看当前nginx版本 1nginx -v2. 查看centos版本 1cat /etc/redhat-release3. 创建一个新的文件nginx.repo&#xff0c;其中第三行的7是因为我的centos版本是7点多的&#xff0c;你看自己是多少就改多少 1vim /etc/yum.repos.d/nginx.repo23[nginx]4namenginx repo 5baseu…

2023年中国超导磁体市场规模、需求量及行业竞争现状分析[图]

超导磁体一般是指用超导导线绕制的能产生强磁场的超导线圈&#xff0c;还包括其运行所必要的低温恒温容器。通常电磁铁是利用在导体中通过电流产生磁场&#xff0c;由于超导材料在超导状态下具有零电阻特性&#xff0c;因此可以以极小的面积通过巨大的电流。超导磁体具有场强高…