系统时钟和定时器——看门狗定时器

发布者:不染尘埃最新更新时间:2016-08-14 来源: eefocus关键字:系统时钟  定时器  看门狗定时器 手机看文章 扫描二维码
随时随地手机看文章
看门狗定时器和普通定时器一样。只是普通定时器一般是段一段时间,待时间结束后,进入中断处理程序中,而看门狗在定义的时间结束时,并不希望中断发生,为了防止中断发生,就要在中断发生前,对看门狗定时器某些寄存器进行重新赋值,使它重新开始计数,俗称喂狗操作。

 WATCHDOG定时器所涉及的寄存器如下:

1、WTCON寄存器

用于设置预分频系数、选择工作频率、决定是否使能中断、是否启用WATDOG功能(即是否输出复位信号)。

WATDOG定时器工作频率=PCLK/(prescaler value+1)/(divider value)

prescaler value=0~255;

divider value=16,32,64,128;

芯片手册中的WTCON如下图:

系统时钟和定时器——看门狗定时器 - 成 - 学海泛舟
2、WTDAT寄存器
WTDAT寄存器用来决定WATCHDOG定时器的超时周期,定时器启动后,计数(WTCNT)到达零的时候,WTDAT寄存器的值会自动传入WTCNT中。第一次启动WATDOG定时器的时候,WTDAT寄存器的值会自动传入WTCNT寄存器中。
3、WTCNT寄存器
启动看门狗定时器之前,必须对这个寄存器写入初值。启动定时器后,它开始减一计数,如果计数到达0的时候,如果中断使能就发出中断,如果使能发出复位信号,就装载WTDAT的值并重新开始计数。

 


 

#include "2440addr.h"

#define U32 unsigned int

 

void Delay(int a)

{

       int k;

       for(k=0;k

              ;

}

 

void __irq watchdog(void)

{

     

      rGPBDAT |= 1;             /*蜂鸣器响*/

       /*清中断标志位*/

/*注意接下来这两行代码。一般来说中断标志清除顺序为:SUBSRCPND-->SRCPND-->INTPND。但是在用CodeWarrior调用AXD调试过程中,并没有因为其先后顺序不同而出现中断,但是当我点击STOP键,之后再点击GO键时,每一次都会听到蜂鸣,这个现象是后来发现的,是不是每次STOP之后,相当于直接产生中断信号,致使不能正常喂狗?这里不是很理解,希望哪位达人给予讲解*/

       rSRCPND = 0x1<<9;

       rSUBSRCPND = 0x1<<13;

       rINTPND = 0x1<<9;
       
      

}

 

void Main(void)

{

       int light;

       int temp;

       int i;


       rGPBCON = 0x155555;                     /*B0输出,给蜂鸣器;B5~B8输出,给LED*/

       rGPBUP  = 0x7ff;

 

       rWTCON = 0xf9<<8;                /*设置预分频系数[15:8],以及时钟选择[4:3]。PCLK=50MHz Prescaler = 15*16+9=249, Division = WTCON[4:3]=0b00=16,时钟频率为12.5kHz*/

       rWTDAT = 50000;               /*设置看门狗定时器超时时间为4秒(50÷12.5)*/

       rWTCNT = 50000;

       rWTCON |= (1<<5)|(1<<2);         /*开启定时器[5],中断使能[2],不发出复位信号[0]*/

/*中断设置,看门狗有子中断源*/

       rSRCPND = 0x1<<9;

       rSUBSRCPND = 0x1<<13;

       rINTPND = 0x1<<9;

       rINTSUBMSK = ~(0x1<<13);            

rINTMSK = ~(0x1<<9); 

                  

       pISR_WDT_AC97 = (U32)watchdog;

 

       light = 0x000;

       temp = light | 1;

       rGPBDAT = ~temp;

       Delay(500000); /*大约延时0.4S*/
      

       while(1)

       { 
         
        
         for(i=0;i<4;i++)
         {
                light = 1<<(5+i);

                temp = light | 1;

                rGPBDAT = ~temp;
    Delay(500000);
     if(i>=2)
     {
           light = 1<<(4+2*i);
             temp = light | 1;
      rGPBDAT = ~temp;
      Delay(500000);
     }
          }
  

             rWTCNT = 50000;               /*喂狗,重新赋值,防止中断*/
             
           for(i=0;i<4;i++)
         {
                 light = 1>>(5+i);
                 temp = light | 1;
                 rGPBDAT = ~temp;
     Delay(500000);
     if(i>=2)
     {
           light = 1>>(4+2*i);
            temp = light | 1;
      rGPBDAT = ~temp;
      Delay(500000);
     }
          }
 
       }

}

关键字:系统时钟  定时器  看门狗定时器 引用地址:系统时钟和定时器——看门狗定时器

上一篇:FL2440 UART的用法
下一篇:系统时钟和定时器——PWM定时器

推荐阅读最新更新时间:2024-03-16 15:04

STM32 定时器输入捕获实现红外遥控数据接收
一、原理 1、红外发射协议 红外发射协议已经在之前的 文章 中写过,在此就不赘述。 2、定时器计数和输入捕获 定时器就是按照一个特定的频率对计数值进行加一或减一操作,当数值溢出时则产生一个标志或中断。 定时器的输入捕获就是可以测量输入信号的脉冲宽度。 本次就是通过普通计数和输入捕获的结合来实现的。 3、实现方法 利用定时器记录输入信号高脉冲的时间,通过该时间来判断数据是否是同步头信息、数据 1 或者数据 0。 二、实现 1、配置 定时器2 输入捕获通道 示例代码中使用 PA1 管脚,配置为上拉输入模式,复用功能为定时器2的通道2。 定时器采用普通定时器,定时器2,该定时器具有输入捕获功能。 配置定时
[单片机]
精简通俗易懂的STM32时钟系统小结
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 其中40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择
[单片机]
MCS-51单片机的定时器/计数器概念
一、MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝; 因此,单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒; MCS-51
[单片机]
MCS-51单片机的<font color='red'>定时器</font>/计数器概念
STM32之通用定时器
STM32中的定时器有多种,按功能分成2个高级控制器定时器,4个普通定时器,2个基本定时器,2个看门狗定时器,1个系统滴答定时器SysTick。 定时器的关键是定时时间的计算。比如用定时器控制继电器的开关的时候,需要延时一段时间才关闭或者开启,这时候离不开定时器定时。 通用定时器定时时间计算。1秒中断的基本实现: 通用定时器模块的入口时钟经过分频得到计数器的时钟,用CK_CNT表示,预分频器的系数为:TIMx_PSC,当TIMx_PSC=0时,表示不分频,=1时,2分频。以此类推。 公式为:CK_CNT=fclk_PSC/(PSC +1),其中PSC最大为65535. 其次是TIM5计数器的计数值的设置,TIM5计数器以
[单片机]
STM32之通用<font color='red'>定时器</font>
MSP430学习笔记(2)定时器A
3. 定时器A: 所有MSP430系列的FLASH型单片机都含有定时器A(Timer_A),由一个16位定时器和多路比较/捕获通道组成。每个比较/捕获通道都是以16位定时器的定时功能为核心进行单独的控制。 1) 定时器由以下部分组成: a) 计数器部分:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4、8分频作为计数频率。 b) 捕获/比较器:用于捕获时间发生的时间或产生时间间隔,每个捕获/比较的结构完全相同,输入输出都决定于各自所带的控制寄存器的控制字,捕获/比较器相互之间独立。 c) 输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号并支持PWM。 2) Timer
[单片机]
STM8 TIM2 定时器的问题
所用的芯片为STM8S103F3P6,编译器为IAR ,程序代码如下: // #include iostm8s105c6.h #include iostm8s103F3.h // Very importtant void DelayMS(unsigned int ms) { unsigned char i; while(ms != 0) { for(i=0;i 250;i++) { } for(i=0;i 75;i++) { } ms--; } } ////GPIO口初始化 void GPIO_init(void) { PA_DDR = 0x08; // 配置PD端口的方
[单片机]
LPC824-多速率定时器MRT
在LPC824中,除了系统定时器SysTick以外,还拥有4个其他定时器,分别是多速率定时器MRT,自唤醒定时器WKT,SCTimer/PWM和窗口看门狗定时器。这4个定时器都位于APB设备区,与SysTick不在同一区域。虽然都是定时器,但它们却有各自不同的特点及用途。下面就先来讨论一下多速率定时器MRT。 多速率定时器MRT是一个31位的中断定时器,拥有4个通道独立,具有重复、总线停止和单次三种中断模式,具有从单独设置的值开始递减计数的功能 。 MRT不具备可配置的引脚。 多速率定时器MRT提供四通道重复中断定时器,每个通道均可通过独立的时间间隔编程,每个通道均独立于其他通道工作,各定时器的模式分别在定时器控制寄存器中设置
[单片机]
LPC824-多速率<font color='red'>定时器</font>MRT
STM32高分辨率定时器(HRTIM)使用实例之PWM
STM32高分辨率功能非常强大,寄存器数量非常多,使用起来也比较麻烦,本文使用HRTIM1产生一组互补输出的PWM 高分辨率定时器的初始化比普通定时器要复杂得多, HRTIM_OutputCfgTypeDef HRTIM_TIM_OutputStructure;//配置输出特性,高低电平等 HRTIM_BaseInitTypeDef HRTIM_BaseInitStructure;//配置基本参数,这部分和普通定时器一样 HRTIM_TimerInitTypeDef HRTIM_TimerInitStructure; //配置不同模式 HRTIM_TimerCfgTypeDef HRTIM_TimerWaveStructure;/
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved