arm9的时钟和定时器
时钟
两种能够提供时钟的方式:
1) 晶振
2) PLL(也就是锁相环):通用PLL需啊一个晶振,和对晶体特定频率分频或倍频的锁相环电路。
学习ARM9时钟的四步:
1) 晶振:12MHZ
2) 有多少个PLL:两个,MPLL和UPLL
3) PLL产生了哪些时钟:
MPLL:FCLK HCLK PCLK
UPLL:UCLK
4) 时钟都用来做什么了:
FCLK:用于CPU核。
HCLK:用于AHB总线设备,如cpu核,存储控制器,中断控制器,DMA等。
PCLK:用于APB总线设备,如watchdog,i2c,iis等。
UCLK:用于USB设备。
下面是开机流程图:
注:刚开机的时候,cpu核的频率为外部输入时钟的频率。
初始化流程如下:
1) 设置LOCKTIME。
2) 设置MPLLCON寄存器,用于设置FCLK与fin(外部输入的时钟)的倍数。
3) 设置CLKDIVN寄存器,用于设置FCLK,HCLK,PCLK三者的比例。
4) 设置CAMDIVN寄存器,用于将CPU的总线模式变为异步模式(因为FCLK和HCLK不相等,按照芯片手册,应该做这个变化)。
定时器
从上图可以看出,arm9共有5个16位定时器,时钟源是PCLK。
0号和1号使用一个预分频器,2,3,4号使用一个预分频器。第二级分频器功能输出5种频率的时钟:2分频,4分频,8分频,16分频或者外部时钟TCLK0/TCLK1。
0-3号定时器有一个输出pin,故他们可以输出PWM,而4号定时器不能。
定时器的工作流程如下:
1) 程序初始的时候,设定TCMPBn(定时器的比较值),TCNTBn(初始计数值)这两个寄存器。
2) 设置TCON启动寄存器来启动定时器。这时TCMPBn,TCNTBn的值被装入其内部寄存器TCMPn,TCNTn中。在定时器n的工作频率下,TCNTn开始减一计数,其值可以通过读取TCNTOn得出。
3) 当TCNTn的值等于TCMPn的值时,定时器n的输出管脚TOUTn反转。
4) 当TCNTn的值等于0时,输出管脚再次反转。
5) 当TCNTn的值等于0时,如果TCON寄存器设置定时器n为自动加载,则TCMPBn,TCNTBn的值被从新装入其内部寄存器TCMPn,TCNTn中。
寄存器介绍:
1) TCFG0寄存器:设置预分频。
2) TCFG1寄存器,设置分频。
3) TCNTBn寄存器:初始计数值。
4) TCMPBn寄存器:保存比较值。
5) TCNTOn寄存器:读此寄存器可知道计数器目前值。
6) TCON寄存器:控制寄存器
arm9的时钟和定时器的更多相关文章
- LibOpenCM3(五) 基础功能: 系统时钟, GPIO, 定时器
目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...
- STM32学习笔记(一)时钟和定时器
由于近期在准备海洋航行器比赛,正好趁此机会学习一下ARM,看到周围很多同学都在使用32,所以我也买了一块STM32F103ZET6,准备好好地学习一下. STM32的时钟系统相当的复杂,包含了5个时钟 ...
- Arduino入门笔记(7):利用1602、1302实现时钟和定时器
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 常常听到老妈在做饭时说“开锅15分钟后叫我一下”,为何不做个定时器,来提醒老妈呢 ...
- JZ2440 裸机驱动 第10章 系统时钟和定时器
本章目标 了解S3C2410/S3C2440的时钟体系结构 掌握通过设置MPLL改变系统时钟的方法 掌握在不同的频率下设置存储控制器的方法 掌握PWM定时器的用法 ...
- STM32时钟和定时器
时钟源 STM32包含了5个时钟源,分别为HSI.HSE.LSI.LSE.PLL. HSI是高速内部时钟.RC振荡器,频率为8MHz: HSE是高速外部时钟,即晶振,可接石英/陶瓷谐振器或接外部时钟源 ...
- stm32定时器实现60秒定时秒表
#include "led.h" #include "delay.h" #include "key.h" #include "sy ...
- linux动态时钟探索
在早期的linux内核版本的时间概念都是由周期时钟提供的.虽然比较有效,但是,对于关注能耗电量的系统上,就不能满足长时间休眠的需求,因为周期系统要求必须在一定的频率下,周期性的处于活动状态.因此,li ...
- [ZigBee] 5、ZigBee基础实验——图文与代码详解定时器1(16位定时器)(长文)
1.定时器1概述 定时器1 是一个支持典型的定时/计数功能的独立16 位定时器,支持输入捕获,输出比较和PWM等功能.定时器有五个独立的捕获/比较通道.每个通道定时器要使用一个I/O 引脚.定时器用于 ...
- (笔记)Linux内核学习(八)之定时器和时间管理
一 内核中的时间观念 内核在硬件的帮助下计算和管理时间.硬件为内核提供一个系统定时器用以计算流逝的时间.系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理. 墙上时间和系 ...
随机推荐
- (二)OpenCV-Python学习—对比度增强
·对于部分图像,会出现整体较暗或较亮的情况,这是由于图片的灰度值范围较小,即对比度低.实际应用中,通过绘制图片的灰度直方图,可以很明显的判断图片的灰度值分布,区分其对比度高低.对于对比度较低的图片,可 ...
- ip地址掩码和位数对应关系表、子网掩码、网络地址、主机地址-yellowcong
本文链接:https://blog.csdn.net/yelllowcong/article/details/76736594ip的地址掩码,刚开始感觉特别蒙蔽,网掩码都是每段8位二进制,共32位,子 ...
- SymPy解方程的实现
https://www.cnblogs.com/zgyc/p/6277562.html SymPy完全是用Python写的,并不需要外部的库 原理: 单纯用语言内置的运算与变量解决的是,由值求结果.如 ...
- Java基础 try...catch...catch 使用Exception,去捕获其子类异常
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- Python3基础 二、八、十、十六进制数的定义
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- (转)关于sql和MySQL的语句执行顺序(必看!!!)
原文:https://blog.csdn.net/u014044812/article/details/51004754 https://blog.csdn.net/j080624/article/d ...
- python操作excel——openpyxl
一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ...
- 判断命令test
判断命令test一般用于脚本当中,可以简写为中括号[ ].其会对跟随的条件进行判断,一般可以分为数值判断.字符串判断和文件判断.语法格式为test [判断条件]或[ 判断条件 ],注意中括号[ ]与判 ...
- css几个优先级测试和!important
css样式不加!important情况下的有默认优先级 ,用!important提高优先级,最常见的css样式选择器的优先级测试.之前博文里也用到了提升优先级的方法: 测试结果:加了!importan ...
- oracle 添加字段
alter table 表名 add 新增字段名(类型+长度); #添加字段 alter table asset_orders add remark varchar2(255); #查看 descri ...