首页 > 其他 > 详细

s3c2440裸机-异常中断(五. irq之定时器中断)

时间:2020-03-11 20:18:38      阅读:58      评论:0      收藏:0      [点我收藏+]

之前讲过s3c2440时钟体系,看了时钟体系再来看定时器中断会更好的结合运用所学知识点。

S3c2440共有2种定时器:

1.Watchdog看门狗定时器
2.PWM脉冲可调制定时器

下面详细介绍2种定时器的原理,来了解定时器是如何产生定时器中断的。

1. Watchdog看门狗定时器

1)Watchdog看门狗定时器原理

Watchdog定时器的原理很简单,寄存器很少,框图如下:

1.png

1.定时器,定时器那肯定是需要用到时钟的,从框图中可以看到Watchdog定时器采用的时钟源是PCLK,从s3c2440时钟体系中也可以体现出来,接的是APB总线。

2.然后到达一个8bit的分频器,可以通过配置WTCON[15:8]来设置分频器的预设值。

3.再设置WTCON[4:3]来设置除数因子来进一步分频。
所以最终的Watchdog定时器的时钟周期t_watchdog = 1/[ PCLK / (Prescaler value + 1) / Division_factor ]

4.到达WTCNT:看门狗递减寄存器。WTCNT里的数据就开始在输入时钟频率下递减。WTCNT的值由WTDAT寄存器提供。

5.WTDAT:WTDAT寄存器用于指定计数器的初始值,也就是它的超时时间,系统上电之后硬件自动的将0x8000的初始值载入到WTCNT里,在发生了第一次超时操作时,WTDAT的值才会载入到WTCNT寄存器。

当WTCNT的值减到0时,就会触发看门狗定时器中断,进而产生复位。中断框图中可以看到可以设置WTCON[2]来设置是否产生中断信号,可以设置WTCON[0]来设置是否产生复位信号。

WTCON寄存器如下图:

2.png

WTCNT、WTDAT寄存器如下图:

3.png

2)看门狗定时器中断编程实现

在之前的章节中,我们在start.s启动代码中首先做的就是关闭看门狗,把WTCON[5]=0,也就是把Watchdog timer给disable。那么Watchdog Timer就不再工作了,这样做是为了防止在启动代码进行硬件初始化的时候出现超时,发出复位信号又去重启硬件,这样就陷入了不断重启过程中。因为s3c2440芯片默认WTCON[5]是1,也就是Watchdog Timer是处于使能状态。

我们之前s3c2440时钟体系中配置了PCLK=50M Hz, 那么我们WTDAT取默认值0x8000,那么根据公式算出从开机到触发复位重启的时间t=WTDAT/( 1/[ PCLK / (Prescaler value + 1) / Division_factor ])。

我们配置

s3c2440裸机-异常中断(五. irq之定时器中断)

原文:https://www.cnblogs.com/fuzidage/p/12464079.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!