社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 945|回复: 5

[求助] 看门狗中断不响应

[复制链接]

8

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-20 15:12:41 | 显示全部楼层 |阅读模式
LunchPad MCU MSP430G2452 写了段程序学习,IAR 6.5版本,用看门狗中时间中断, 中断始终没有触发,是否可以帮忙看一下,谢谢
程序如下
#include "io430.h"
#include "io430g2452.h"
unsigned char const led_tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
       0x7f,0x6f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管编码表
void Delay(int t)
{
  int i;
  while (t--)
   for(i=500;i>0;i--);
}

int main( void )
{
  int p;
  p=0;
  WDTCTL = WDT_ADLY_16;// 设置内部看门狗工作在定时器模式,1.6ms中断
  IE1|= WDTIE;        // 使能看门狗中断
  
  P1SEL = 0X00;
  P1DIR |= 0xFF;  //定义P1为输出方向,端口1用来驱动LED共阴极数码管
  P1OUT = 0x00;   //定义P1输出为 0 ,
  P2OUT =0xF7;
  P2DIR |=(BIT0+BIT1+BIT2+BIT3+BIT5+BIT6+BIT7);
  P2DIR &= ~BIT4;  //先把BIT3 取反后和P1DIR与  P1DIR=PIDIR & ~BIT3

   while(1)
   
{  
     p++;
     
     if (p>=15000) p=0;
     
  }

}
#pragma vector = WDT_VECTOR
__interrupt void Watchdog_timer(void)
{

   int n;
    for(n=0;n<10;n++)
      
       P1OUT=led_tab[n];
       Delay(600);
   if(n>=9)  P2OUT =0xF3;  
      Delay(600);
}
此帖出自MSP430论坛


回复

使用道具 举报

5355

TA的帖子

168

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-1-20 16:08:53 | 显示全部楼层
你可能是没开全局中断,另外,你的中断函数的for循环没加大括号,可能得不到你想要的结果。
  1. #include <msp430.h>

  2. int main(void)
  3. {
  4.   WDTCTL = WDT_MDLY_32;                     // Set Watchdog Timer interval to ~30ms
  5.   IE1 |= WDTIE;                             // Enable WDT interrupt
  6.   
  7.   /* Initialization Code */
  8.   P1REN = 0x1B;                             // Terminate unavailable Port1 pins (P1.0/1/3/4) properly
  9.                                             // Config as Input with pull-down enabled
  10.   BCSCTL3 |= LFXT1S_2;                      // Select VLO as low freq clock     
  11.   /* End Initialization Code */
  12.   
  13.   P1DIR |= BIT2;                            // Set P1.2 to output direction

  14.   __bis_SR_register(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
  15. }

  16. // Watchdog Timer interrupt service routine
  17. #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
  18. #pragma vector=WDT_VECTOR
  19. __interrupt void watchdog_timer(void)
  20. #elif defined(__GNUC__)
  21. void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
  22. #else
  23. #error Compiler not supported!
  24. #endif
  25. {
  26.   P1OUT ^= BIT2;                            // Toggle P1.2 using exclusive-OR
  27. }
复制代码



EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,虽然在群里买不到板子,但是可以学会开车;虽然学不到技术,但是可以学会开车;商家勿入!加群暗号:喵


回复

使用道具 举报

1011

TA的帖子

1

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-1-21 10:33:57 | 显示全部楼层
开启全局中断


回复

使用道具 举报

8

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-24 20:27:36 | 显示全部楼层
谢谢各位,问题找到了


回复

使用道具 举报

8

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-24 20:51:33 | 显示全部楼层
新手入门,每天努力中
版主,还有个问题就是程序上电后程序无法运行,除非在IAR中用StepIn 单步走到中断后,中断就会运行.


回复

使用道具 举报

8

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-24 21:12:09 | 显示全部楼层
问题找到了,WDT_MDLY_32即可


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-7-18 03:25 , Processed in 0.501498 second(s), 16 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表