[求助] 关于protues房子MSP430单片看门狗不能复位的问题!

xsy_86   2011-7-11 21:38 楼主
我是新手,MSP430的新手。因为板子还没有到手,所以先用protues仿真学习一下。我仿真的是MSP430F235。
程序如下:#include "io430.h"

void delay(int t)
{
  int x,y;
  for(x=0;x<t;x++)
  {
    for(y=0;y<t;y++);
  }
}

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR = 0xFF;
  P1OUT = 0xFF;  //灯灭
  delay(500);
  P1OUT = 0X00;  //灯亮
  delay(500);
  WDTCTL = WDTPW;
  while(1);
  
  //return 0;
}
相当简单的程序,就是想让看门狗复位,让灯闪一下。可是很明显,仿真结果是灯一直亮着。看门狗没有复位!这是为什么呢?

回复评论 (6)

CPU时钟是多少呢?是默认的从DCO做时钟1.045MHz吗?
点赞  2011-7-12 09:37
如果闪烁频率太高的话也是看不到的,你的delay函数大概的延时周期是1000*500个cpu时钟,也就是500K。你尽量控制在20Hz以下,一般人眼就可以看出来
点赞  2011-7-12 09:45

仿真不出来wdt

点赞  2011-7-12 11:13

用作看门狗不能仿真不出来,间隔定时器可以仿真

点赞  2011-7-12 11:13
void  main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR = BIT0;
    P1OUT ^= BIT0;
    P7SEL |= BIT1+BIT0;                             // 设置XT1第二引脚
    UCSCTL6 &= ~(XT1OFF);                           // XT1 开启
    do
    {
        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
        SFRIFG1 &= ~OFIFG;                     
    }while (SFRIFG1&OFIFG);                  
   
    UCSCTL4 |= SELA__XT1CLK;
    WDTCTL =  WDT_ARST_250;  
    while(1);
}
点赞  2011-7-12 17:53

 WDTCTL = WDTPW;

 

这句有问题

点赞  2011-7-12 17:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复