作用
在S3C2440A中,看门狗定时器的作用是当由于噪声和系统错误引起的故障干扰时恢复控制器的工作。
也就是说,系统内部的看门狗定时器需要在指定时间内向一个特殊的寄存器内写入一个数值,俗称喂狗。
如果喂狗的时间过了,那么看门狗定时器就会发出一个复位信号导致系统复位。
控制看门狗的寄存器如下:
可以看出,在初始状态下,看门狗定时器为1,是使能的,我们只需要将WTCON第五位清零即可。(需包含头文件#include<s3c2440.h>)
无头文件
无头文件的话,我们可以自己定义,WTCON寄存器的地址为0x53000000,而2440所有的寄存器都是32位的,那么就意味着我们需要把0x53000000这个地址开始连续的4个字节当作是一个无符号整型来看。
我们可以定义一个宏,以便访问WTCON寄存器:
#define WTCON (*((volatile unsigned int *)(0x53000000)))
volatile:禁止编译器的优化,从而避免造成对实际空间访问的错误
写完宏后,我们就可以进一步编写看门狗失能函数:
void disableWTD(void)
{
WTCON &= ~(1 << 5); //将第五位清零
}
并在主调函数中调用即可关闭看门狗:
int main(void)
{
disableWTD();
while(1)
{
}
}