AT91RM9200---定时器简介
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---定时器简介的更多相关文章
- MFC的定时器OnTimer
本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时 ...
- STM32之定时器
一.定时器简介 1.时钟来源 2.定时器结构(以基本定时器为例) 二.基本定时器的编程方法 1.基本定时器的寄存器 2.例程 /** * @brief 定时器6的初始化,定时周期0.01s * @pa ...
- STM32学习笔记——定时器中断(向原子哥学习)
定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...
- VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...
- VS2010/MFC编程入门之四十四:定时器Timer
前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...
- 使用系统定时器SysTick实现精确延时微秒和毫秒函数
SysTick定时器简介 SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 ...
- VS2010-MFC(MFC常用类:定时器Timer)
转自:http://www.jizhuomi.com/software/232.html 前面一节讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考 ...
- STM32F103ZET6通用定时器
1.通用定时器简介 通用定时器是由一个可编程预分频器驱动的16位自动装载计数器构成.通用定时器可以应用于多种场合,如测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM).使用通用定时 ...
- 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置
灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...
- Go定时器--Timer
目录 前言 Timer 定时器 简介 使用场景 1. 设定超时时间 2. 延迟执行某个方法 Timer对外接口 1. 创建定时器 2. 停止定时器 3. 重置定时器 其他接口 1. After() 2 ...
随机推荐
- Android自动化测试探索
Android自动化测试探索 前言 通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线.但是,随着时间的堆叠,一款产品的功能也越来越多.这时,我们为了保证产品 ...
- 25 行 Python 代码实现人脸识别——OpenCV 技术教程
OpenCV OpenCV 是最流行的计算机视觉库,原本用 C 和 C++ 开发,现在也支持 Python. 它使用机器学习算法在图像中搜索人的面部.对于人脸这么复杂的东西,并没有一个简单的检测能对是 ...
- Leetcode 242.有效的字母异位词 By Python
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...
- luogu4932 浏览器 (拆)
分析1的个数的奇偶性: 奇xor奇=偶xor偶=偶 奇xor偶=奇 所以只要统计1的个数是奇数的数的个数 和 是偶数的个数 乘一起就行了 直接用bitset来做,虽然常数很小/数据随机可以过,但复杂度 ...
- linux 分区、目录及用途
主要分区: 目录 建议大小 格式 描述 / 10G-20G ext4 根目录 swap <2048M swap 交换空间 /boot 200M左右 ext4 Linux的内核及引导系统程序所需要 ...
- apk的安装删除
1,签名: java -jar signapk.jar platform.x509.pem platform.pk8 DownloadProvider.apk DownloadProvider-sig ...
- 【模板】倍增+Floyd
题目大意:给定一个 N 个顶点的邻接矩阵.起点顶点.终点顶点,求至少经过 K 条边(边可以重复)从起点到终点的最短路长度,若不能到达,输出 -1. 题解:至少经过 K 条边和恰好经过 K 条边的初始条 ...
- poj 3061(二分 or 尺取法)
传送门:Problem 3061 https://www.cnblogs.com/violet-acmer/p/9793209.html 马上就要去上课了,先献上二分AC代码,其余的有空再补 题意: ...
- Redis集群中的节点如何保证数据一致
主从复制: 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而 ...
- 门店评级VS坏客户
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...