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

ARM--时钟管理单元与定时器

一、时钟管理单元

1、概述

        时钟管理单元

        是嵌入式系统(如ARM架构芯片)中负责生成、分配和调控时钟信号的核心模块

        主要功能

        倍频/分频:通过锁相环、分频器组合生成不同频率的信号

        时钟分配:为CPU、总线、外设等提供独立时钟

2、组成模块

  • 时钟源:晶体振荡器,产生稳定的震荡,作为系统运行时的频率(主频)
  • PLL:锁相环电路,用于实现倍频功能的特殊电路
  • PFD:相位分数分频器,可实现非整数分频,输出精确灵活的时钟信号,也可用于多路适中的生成
  • 分频器:分频(降低输入频率)

3、时钟配置

        以下图为例,时钟源配置过程如下

  • 通过配置 CSCMR2 寄存器选择时钟源
  • 通过配置 CS1CDR 寄存器蛇者分频系数,从而得到目的频率的时钟信号

二、定时器

1、EPIT 

  1.概述:

        EPIT是专为周期性中断定时设计的32位向下计数定时器

        EPIO 定时器通常支持三种时钟源选择

        EPIO仅支持定时中断功能,不具备输入捕获、PWM输出等特性,适用于精准时间控制

  2.结构组成

        EPIO 定时器结构如下图,图中各个部分为:

①:多路选择器,用来选择 EPIT 的时钟源

②:十二位分频器,负责对时钟源信号进行分频

③:Counter Register:计数寄存器,保存当前计数值,在使能计时器工作后,计数寄存器从预设值开始自减,当预设值减少到0或者比较值,触发中断

        Load Register:加载寄存器,在set-and-forget工作模式下,当计数寄存器中数据减到零时,会加载加载寄存器中的数据从新开始自减

        Compare Register:比较寄存器,存放比较值
④:比较Compare Register与Counter Register的值,如果相等的话产生比较事件

⑤:可以指定引脚输出信号
⑥:用于产生比较中断

3.工作模式

set-and-forget:

        在此模式下 EPIT 的计数器从加载寄存器 中获取初始值,不能直接向计数器寄存器写入数据。不管什么时候,只要计数器计数到 0,那么就会从加载寄存器中重新加载数据到计数器中

free-running :

        此模式下,当计数器计数到 0 以后会重新从0XFFFFFFFF 开始计数,并不是从加载寄存器 中获取数据

2、GPT
1.特点

  • GPT 是周期性中断 32 位向上计数定时器,通常有多种时钟源可供选择
  • 支持中断、输入捕获以及 PWM 输出等功能

     2.结构组成


GPT 定时器结构如下图,图中各个部分为:


①:两路输入捕获通道,可检测外部信号边沿,记录触发时刻的计数值,用于测量脉冲宽度或频率

②:时钟源输入

③:三路输出比较通道,在 Timer Output Reg 中设置比较值,通过 cmp 触发比较事件

④:OFx,用于触发比较中断,OMx用于实现电平翻转,GPT_COMPAREx比较事件输出,可通   过OMx与GPT_COMPAREx结合实现PWM生成的功能

3.GPT实现精确延时

//延时 us 微秒
void delay_us(unsigned int us)
{unsigned int counter = 0;unsigned int old_counter, new_counter;old_counter = GPT1->CNT;                //读取计数器计数值while(1){new_counter = GPT1->CNT;if (old_counter != new_counter){if (new_counter < old_counter)    //超过计数最大值{counter += 0XFFFFFFFF - old_counter + new_counter;}else{                            //没超过计数最大值counter += new_counter - old_counter;}if (counter >= us){return;}old_counter = new_counter;}}
}//延时 ms 毫秒
void delay_ms(unsigned int ms)
{while (ms--){delay_us(1000);}
}



 

 

http://www.dtcms.com/a/395827.html

相关文章:

  • Unity-动画基础
  • 逻辑回归中的决策边界解析与应用实例
  • 设计模式——结构型模式(下)
  • CANoe中封装SeedKey安全解锁函数的完整指南
  • Vue树选择
  • opencv人脸识别
  • 怿星科技桂林子公司乔迁新址,于山水画中开启研发新篇章
  • 创建者模式:工厂方法模式
  • 【 C/C++ 算法】入门动态规划-----路径问题(以练代学式)
  • 三.上网行为安全
  • k个一组翻转链表
  • Super分区和动态分区
  • 2026华清远见新品发布会:聚焦人工智能嵌入式物联网,打造“虚实融合•软硬协同“智能化教育新生态!
  • 09 - spring security加载流程
  • 【大前端】Android:读取剪切板与禁用剪切板复制功能(完整指南)
  • 第18讲 机器学习与深度学习
  • 数据结构 05(线性:栈和队列)
  • RAG系统嵌入模型怎么选?选型策略和踩坑指南
  • 机器学习 vs. 动力学模型,Ai2 最新研究:仅需 2 分钟,ACE2 可完成一次 4 个月季节预报
  • RNN循环神经网络详解
  • 【Nginx开荒攻略】深入解析Nginx进程管理与信号控制:从原理到实战
  • MySQL与Redis面试问题详解
  • 鸿蒙Next IPC Kit详解:构建高效进程间通信的完整指南
  • 【开题答辩全过程】以 基于springboot的高校疫情防控系统为例,包含答辩的问题和答案
  • Centos7 命令行使用nmcli重置网络配置
  • 如何计算sequence粒度的负载均衡损失
  • 学财税大数据应用,需要考CPA/税务师吗?
  • RAG全栈技术——文档加载器
  • 如何理解Service Mesh(服务网格)
  • android9适配camera gc02m1