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内核学习(八)之定时器和时间管理
一 内核中的时间观念 内核在硬件的帮助下计算和管理时间.硬件为内核提供一个系统定时器用以计算流逝的时间.系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理. 墙上时间和系 ...
随机推荐
- Anaconda3_5.3.1+Pycharm2018.3安装步骤
最近更新了Anaconda软件,重新配置了以下Python开发环境,结果之前旧环境开发的好好的程序竟然跑不起来.网上各种搜索,各种找答案还是没有一篇靠谱的文章教我把问题解决.走了各种弯路,足足整了几天 ...
- matlab学习笔记7-定时器
一起来学matlab-matlab学习笔记7-定时器 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张老师的书籍,让 ...
- js 二叉树算法
//生成二叉树 function binarySearchTree() { let Node = function(key) { this.key = key; this.left = null; t ...
- [LeetCode] 271. Encode and Decode Strings 加码解码字符串
Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...
- Indy10 Tcp接收数据问题
在做Delphi开发时,使用Indy组件来做网络通讯是一种比较快捷的方式.今天要说一下indy10中tcp接收数据的问题. 我们在测试时经常使用Wrinteln来发送数据,用Readln来接收数据.用 ...
- filter和map内置函数
filter filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回 ...
- 倒数第K个结点
typedef struct Lnode{ int data; struct Lnode *next; }Lnode,*Link; Link fi(Link head,int k){ Link fa ...
- Kafka Schema Registry | 学习Avro Schema
1.目标 在这个Kafka Schema Registry教程中,我们将了解Schema Registry是什么以及为什么我们应该将它与Apache Kafka一起使用.此外,我们将看到Avro架构演 ...
- python-tkinter使用方法——转载(二)
转载URL:https://www.cnblogs.com/yudanqu/p/9467803.html Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包 ...
- Java中BIO,NIO,AIO的理解
在高性能的I/O体系设计中,有几个概念常常会使我们感到迷惑不解.具体如下: 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 ...