山东群英会开奖结果

(玩电子) 电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

新唐M051 WDT看门狗使用程序

作者:huqin   来源:本站原创   点击数:x  更新时间:2014年09月01日   【字体:

以下程序是基于新唐M051单片机而开发的:

 
 
/* 看门狗是向上计数的,PWM是向下计数的
 看门狗特征:
 1)18位自由运行的计数器以防止CPU在延迟时间结束之前发生看门狗定时器复位
 2)溢出时间间隔可选(2^4 ~ 2^18),溢出时间范围在104ms~26.3168s(如果WDT_CLK为10KHz)
 3)复位周期=(1/10KHz)*63,如果WDT_CLK=10KHz */ 
#include "WDT.h"
#define DEBUGMSG       printf
void SystemInit(void)
{
  PROTECT_REG
  (
   PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
   while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定  
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
   /* 使能内部10K时钟 */
   PWRCON |= OSC10K_EN;
   /* 等待10K时钟稳定 */
   while((CLKSTATUS & OSC10K_STB) == 0); 
   /* HCLK时钟选择为外部晶振 */
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; 
  )
}
/****************************************
*函数名称:WatchDogInit
*输    入:无
*输    出:无
*功    能:看门狗初始化
******************************************/
VOID WatchDogInit(VOID)
{
 PROTECT_REG
 ( 
     /* 使能看门狗时钟 */ 
  APBCLK |= WDT_CLKEN; 
  /* 设置看门狗时钟源为10K */
  CLKSEL1 = (CLKSEL1 & (~WDT_CLK)) | WDT_10K;     
  /* 使能看门狗定时器复位功能 */
  WTCR |= WTRE; 
  /* 设置看门狗超时间隔为1740.8ms */
  WTCR &= ~WTIS;
  WTCR |= TO_2T14_CK; //(2^14+1024)*(1000000/10000)=17408*100=1740800us=1.7408s 
  /* 使能看门狗中断 */   
  WTCR |= WTIE;
  NVIC_ISER |= WDT_INT; 
  /* 使能看门狗 */
  WTCR |= WTE; 
  /* 复位看门狗计数值 */
  WTCR |= CLRWTR;  
 ) 
}
 
/****************************************
*函数名称:WDT_IRQHandler
*输    入:无
*输    出:无
*功    能:看门狗中断服务函数
******************************************/
VOID WDT_IRQHandler(VOID)
{
    DEBUGMSG("WDT Reset \r\n");         //打印复位信息
 PROTECT_REG
 (
  WTCR |= WTWKF;
  WTCR |= WTIF; 
 )
}
/****************************************
*函数名称:main
*输    入:无
*输    出:无
*功    能:函数主体
******************************************/
INT32 main(VOID)
{
  SystemInit();
  UartInit(12000000,9600);       //波特率设置为9600bps
  WatchDogInit();            //看门狗初始化
  while(1)
  {
      WTCR |= CLRWTR;                           //喂狗操作
   DEBUGMSG("WDT No Reset \r\n"); 
   Delayms(50);
    WTCR |= CLRWTR;                           //喂狗操作
   Delayms(50);
    WTCR |= CLRWTR;                           //喂狗操作
   Delayms(50);
    WTCR |= CLRWTR;                           //喂狗操作
   Delayms(50);
  }
}
 

文章评论

99棋牌 河南快3 山东群英会app下载 聚沙彩票注册 智慧彩票投注预测APP 北京赛车怎么玩 北京赛车pk10赔率最高的平台 海南4+1玩法 智慧彩票投注注册 山东群英会选号技巧