时钟

两种能够提供时钟的方式:

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的时钟和定时器的更多相关文章

  1. LibOpenCM3(五) 基础功能: 系统时钟, GPIO, 定时器

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...

  2. STM32学习笔记(一)时钟和定时器

    由于近期在准备海洋航行器比赛,正好趁此机会学习一下ARM,看到周围很多同学都在使用32,所以我也买了一块STM32F103ZET6,准备好好地学习一下. STM32的时钟系统相当的复杂,包含了5个时钟 ...

  3. Arduino入门笔记(7):利用1602、1302实现时钟和定时器

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 常常听到老妈在做饭时说“开锅15分钟后叫我一下”,为何不做个定时器,来提醒老妈呢 ...

  4. JZ2440 裸机驱动 第10章 系统时钟和定时器

    本章目标      了解S3C2410/S3C2440的时钟体系结构     掌握通过设置MPLL改变系统时钟的方法     掌握在不同的频率下设置存储控制器的方法     掌握PWM定时器的用法   ...

  5. STM32时钟和定时器

    时钟源 STM32包含了5个时钟源,分别为HSI.HSE.LSI.LSE.PLL. HSI是高速内部时钟.RC振荡器,频率为8MHz: HSE是高速外部时钟,即晶振,可接石英/陶瓷谐振器或接外部时钟源 ...

  6. stm32定时器实现60秒定时秒表

    #include "led.h" #include "delay.h" #include "key.h" #include "sy ...

  7. linux动态时钟探索

    在早期的linux内核版本的时间概念都是由周期时钟提供的.虽然比较有效,但是,对于关注能耗电量的系统上,就不能满足长时间休眠的需求,因为周期系统要求必须在一定的频率下,周期性的处于活动状态.因此,li ...

  8. [ZigBee] 5、ZigBee基础实验——图文与代码详解定时器1(16位定时器)(长文)

    1.定时器1概述 定时器1 是一个支持典型的定时/计数功能的独立16 位定时器,支持输入捕获,输出比较和PWM等功能.定时器有五个独立的捕获/比较通道.每个通道定时器要使用一个I/O 引脚.定时器用于 ...

  9. (笔记)Linux内核学习(八)之定时器和时间管理

    一 内核中的时间观念 内核在硬件的帮助下计算和管理时间.硬件为内核提供一个系统定时器用以计算流逝的时间.系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理. 墙上时间和系 ...

随机推荐

  1. latex怎样生成table字样和caption换行的表格

    \begin{table}  \caption{\newline The results of running algorithm parallel using MapReduce.} \hline  ...

  2. Archer和ArcherUI配置说明

    如果Bladex的网关端口是80,则需要修改Archer服务端口,并修改ArcherUI的vue.config.js的端口

  3. [LeetCode] 454. 4Sum II 四数之和II

    Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such t ...

  4. ue4 优化建议与经验

    转自:https://dawnarc.com/2016/12/ue4%E4%BC%98%E5%8C%96%E5%BB%BA%E8%AE%AE%E4%B8%8E%E7%BB%8F%E9%AA%8C/ 内 ...

  5. aspose.slides for java去除水印

    前一段时间使用aspose.slides for java,处理了下才去除的水印,但是时间一久就忘记了,重新整理了下 下载aspose-slides-19.3-jdk16.jar,重命名为aspose ...

  6. POJ8469 特殊密码锁

    总时间限制: 1000ms 内存限制: 1024kB 描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头疼的是,当你按一 ...

  7. leetcode 55 Jump Game 三种方法,回溯、动态规划、贪心

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  8. BugkuCTF~Misc~WriteUp

    1.签到 get flag: Qftm{You should sign in} 2.这是一张单纯的图片 查看图片十六进制 提去特殊字符串进行解码 get flag: key{you are right ...

  9. [转帖]VMware vSphere 6 序列号大全

    VMware vSphere 6 序列号大全 https://blog.csdn.net/sj349781478/article/details/82378244   经过测试ESXI6.5也可以使用 ...

  10. Java 8 Optional 的用法

    认识Optional   Optionals是用于防止 NullPointerException 的漂亮工具.让我们快速了解一下Optionals的工作原理. Optional 是一个简单的容器,其值 ...