1.前言

  • 系统定时器模块集成了3个不同的定时器

一个周期性间隔的定时器,用来为操作系统设置时基

一个看门狗定时器,可用于软件死锁时进行系统复位

一个实时时钟计数器用来记录流逝的时间

  • 系统定时器时钟

这些定时器计数使用由PMC(电源管理控制器)提供的慢时钟,这个时钟的典型频率是32.768KHZ,系统定时器也可以配置成支持其它频率

  • 定时器中断

系统定时器提供了一条中断线,连接到中断控制器,一般是作为终端控制器的中断源1,与debug单元和RTC共用一条中断线,需要通过寄存器进行区分。

2.系统定时器框架

  • 硬件框架

图 系统定时器框架

  • 定时器的用途

图 定时器的用途

3.功能介绍

  • 系统定时器时钟

系统定时器只使用SCLK时钟

  • 周期性间隔定时器

周期性间隔定时器用来为操作系统提供周期性的中断,PIT的reset值是0。

它是基于一个16位的递减计数器。它是通过将一个值预加载到ST_PIMR中。

当计数器达到0的时候,状态寄存器的PITS会被置位。如果使能中断,则会产生一个中断。计数器会自动加载初始值并启动。在任何时候加载ST_PIMR寄存器会立即采用新的初值并重新启动。

注意:ST_PIMR的周期如果小于MCK周期,则会产生不可预料的问题

  • 看门狗定时器

看门狗定时器是防止软件陷入死锁的时候造成系统卡死

它是通过一个16位的递减寄存器实现,初始值由ST_WDMR进行设置。

Reset时的值为0x00020000。它是使用了slow clock的128分频,来达到最大的周期为256s(典型slow clk为32.768khz情况下),也就是每隔128个slow clock周期,计数器加1.

通常情况下,在看门狗定时器溢出之前,用户会通过设置ST_CR.WDRST重新加载看门狗定时器初值

如果溢出发生,会做如下操作

设置中断产生的 ST_SR ( 状态寄存器 ) 的 WDOVF 位
l如果ST_WDMR .RSTEN被设置会产生内部reset信号
l Reloads
and restarts the down counter.

写ST_WDMR寄存器不会加载并重启计数器。当ST_CR被写入,看门狗计数器会立即从ST_WDMR寄存器载入并重启,slow clock 128分频也会立即重置并重启。

  • 实时时钟

实时时钟被用来计数流逝的秒数。它是基于一个20位的计数器,时钟是由slow
clk用编程值进行分频。Reset时这个值分频值被设置为0x8000。

当slow时钟采用32.768khz时,计数器则每隔1秒加1。20bit可以计数到1048576秒,多于12天的时间,然后回绕到0.

实时时钟可以在任何时候从ST_CRTR 寄存器读出值。

计数器的当前值和alarm寄存器ST_RTAR进行比较。如果计数值匹配,TC_SR寄存器的ALMS位被设置。

Reset后alarm寄存器被设置成最大值0.
20位计数器每次增加时,设置ST_SR中的RTTINC位,该位可用来启动中断,或产生一秒信号。
写 ST_RTMR 将立即对时钟分频器载入新值并重启,这同样会导致 20 位计数器复位

AT91RM9200---定时器简介的更多相关文章

  1. MFC的定时器OnTimer

    本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时 ...

  2. STM32之定时器

    一.定时器简介 1.时钟来源 2.定时器结构(以基本定时器为例) 二.基本定时器的编程方法 1.基本定时器的寄存器 2.例程 /** * @brief 定时器6的初始化,定时周期0.01s * @pa ...

  3. STM32学习笔记——定时器中断(向原子哥学习)

    定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...

  4. VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)

    前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...

  5. VS2010/MFC编程入门之四十四:定时器Timer

    前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...

  6. 使用系统定时器SysTick实现精确延时微秒和毫秒函数

    SysTick定时器简介 SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 ...

  7. VS2010-MFC(MFC常用类:定时器Timer)

    转自:http://www.jizhuomi.com/software/232.html 前面一节讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考 ...

  8. STM32F103ZET6通用定时器

    1.通用定时器简介 通用定时器是由一个可编程预分频器驱动的16位自动装载计数器构成.通用定时器可以应用于多种场合,如测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM).使用通用定时 ...

  9. 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置

    灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...

  10. Go定时器--Timer

    目录 前言 Timer 定时器 简介 使用场景 1. 设定超时时间 2. 延迟执行某个方法 Timer对外接口 1. 创建定时器 2. 停止定时器 3. 重置定时器 其他接口 1. After() 2 ...

随机推荐

  1. Android自动化测试探索

    Android自动化测试探索 前言 通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线.但是,随着时间的堆叠,一款产品的功能也越来越多.这时,我们为了保证产品 ...

  2. 25 行 Python 代码实现人脸识别——OpenCV 技术教程

    OpenCV OpenCV 是最流行的计算机视觉库,原本用 C 和 C++ 开发,现在也支持 Python. 它使用机器学习算法在图像中搜索人的面部.对于人脸这么复杂的东西,并没有一个简单的检测能对是 ...

  3. Leetcode 242.有效的字母异位词 By Python

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...

  4. luogu4932 浏览器 (拆)

    分析1的个数的奇偶性: 奇xor奇=偶xor偶=偶 奇xor偶=奇 所以只要统计1的个数是奇数的数的个数 和 是偶数的个数 乘一起就行了 直接用bitset来做,虽然常数很小/数据随机可以过,但复杂度 ...

  5. linux 分区、目录及用途

    主要分区: 目录 建议大小 格式 描述 / 10G-20G ext4 根目录 swap <2048M swap 交换空间 /boot 200M左右 ext4 Linux的内核及引导系统程序所需要 ...

  6. apk的安装删除

    1,签名: java -jar signapk.jar platform.x509.pem platform.pk8 DownloadProvider.apk DownloadProvider-sig ...

  7. 【模板】倍增+Floyd

    题目大意:给定一个 N 个顶点的邻接矩阵.起点顶点.终点顶点,求至少经过 K 条边(边可以重复)从起点到终点的最短路长度,若不能到达,输出 -1. 题解:至少经过 K 条边和恰好经过 K 条边的初始条 ...

  8. poj 3061(二分 or 尺取法)

    传送门:Problem 3061 https://www.cnblogs.com/violet-acmer/p/9793209.html 马上就要去上课了,先献上二分AC代码,其余的有空再补 题意: ...

  9. Redis集群中的节点如何保证数据一致

    主从复制: 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而 ...

  10. 门店评级VS坏客户

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...