DSP

DSP时钟之看门狗

2019-07-13 14:42发布

1.什么是看门狗?          看门狗是一个独立于CPU的计数单元,首先大家要理解独立。它是一个独立的电路,与CPU的定时计数器没有关联的,所以即使工作在睡眠模式,看门狗还是在工作的。     看门狗的作用:防止系统不能正常工作,我们俗称的“跑飞”,当程序跑飞的时候,看门狗就可以监测到,从而让程序复位,使程序工作正常。 2.与看门狗相关的寄存器 看门狗定时器主要有4个寄存器——即看门狗计数寄存器(WDTIM)、看门狗周期寄存器(WDPRD)、看门狗控制寄存器(WDTCR)和看门狗控制寄存器2(WDTCR2)。         看门狗计数寄存器和看门狗周期寄存器都是16位寄存器,它们协同工作完成计数功能。         看门狗周期寄存器WDPRD存放计数的初始值,当计数寄存器的值减到0后,将把周期寄存器中的数载入到计数寄存器中。当控制寄存器中的PSC位减到0之前或看门狗计数器被复位时,计数寄存器将进行减1计数。 3 配置看门狗定时器    初始化和使能看门狗定时器的步骤:    1.将主计数器周期PRD装入看门狗周期寄存器WDPRD    2.设置看门狗定时器控制寄存器WDTCR的模式bit(WDOUT,SOFT和FREE),以及TDDR里的预定标控制值    3.往看门狗定时器的控制寄存器2(WDTCR2)中的WDKEY写入关键值5C6H,使看门狗定时器进入预激活状态    4.写关键值A7EH到WDKEY中,置位WDEN,将预定标模式bit(PREMD)的值写到WDTCR2中。这第二个值完成了关键值序列,表示一个实际的服务序列,WDEN = 1使能看门狗定时器, 3 看门狗定时器的应用 应用看门狗定时器的芯片支持函数首先要包含csl_wdtim.h头文件,接下来定义看门狗定时器的配置结构: WDTIM_Config MyConfig = { 0x0060, /* Counter */ 0x1000, /* Period */ 0x0000, /* Control */ 0x1000 /* Secondary control */ }; 配置看门狗定时器需要调用看门狗配置函数: WDTIM_config(&MyConfig); 在配置好看门狗定时器后调用开始函数,该函数的作用是将看门狗定时器控制寄存器2的WDEN位置成1: WDTIM_start(); 在运行看门狗开始函数后,看门狗开始递减计数,在计数器减到0之前需要周期性地向WDKEY字段写入A5C5h和A7Eh,否则看门狗定时器将会发生超时事件从而触发中断或复位,该操作可以通过调用WDTIM_service()函数来完成。 WDTIM_service();
  看门狗时钟周期 = 外部时钟周期 * 2的N次方(N为看门狗计数器的位数)