仿真状态下程序可以运行,不仿真时不能运行

[复制链接]
4712|40
 楼主| 昊430 发表于 2017-10-21 17:32 | 显示全部楼层 |阅读模式
本帖最后由 昊430 于 2017-10-21 17:32 编辑
  1. #include  <io430g2553.h>
  2. #include <in430.h>
  3. //#include  "BoardConfig.h"

  4. void main(void)
  5. {
  6.    unsigned int i;
  7.   //BoardConfig(0xb8);
  8.   BCSCTL1 |= DIVA_2;                        // ACLK/4
  9.   WDTCTL = WDT_ADLY_1000;                   // WDT 1s/4 interval timer
  10.   IE1 |= WDTIE;                             // Enable WDT interrupt
  11.   P1DIR |= BIT6;
  12.   P1OUT |= BIT6;
  13.   for (i = 180; i>0; i--);
  14.   P1OUT &= ~BIT6;  
  15.   
  16.   while(1)
  17.   {
  18.     unsigned int i;
  19.     _BIS_SR(LPM3_bits + GIE);               // Enter LPM3
  20.     P1OUT |= BIT6;                          // Set P3.5 LED on
  21.     for (i = 180; i>0; i--);               // Delay
  22.     P1OUT &= ~BIT6;                         // Clear P3.5 LED off
  23.   }
  24. }

  25. #pragma vector=WDT_VECTOR
  26. __interrupt void watchdog_timer (void)
  27. {
  28.     _BIC_SR_IRQ(LPM3_bits);                 // Clear LPM3 bits from 0(SR)
  29. }
 楼主| 昊430 发表于 2017-10-21 17:35 | 显示全部楼层
以上是程序,用的是TI的LaunchPad板子,单片机是MSP430G2553,当点击IAR软件下载并仿真后,点击全速运行,小灯瞬间闪了一下,然后大概8S闪一下;
退出仿真模式,按下重启,小灯瞬间闪烁一下,然后就没有动作了;
为什么不在仿真模式下看门狗定时器就不能产生中断了?
dirtwillfly 发表于 2017-10-21 18:13 | 显示全部楼层
可能闪灯太快,肉眼看不到
 楼主| 昊430 发表于 2017-10-22 09:08 | 显示全部楼层
dirtwillfly 发表于 2017-10-21 18:13
可能闪灯太快,肉眼看不到

但是仿真模式下我也是全速运行的,没有让它单步运行
dirtwillfly 发表于 2017-10-22 15:56 | 显示全部楼层
昊430 发表于 2017-10-22 09:08
但是仿真模式下我也是全速运行的,没有让它单步运行

不一样的。仿真模式下是上位机控制着mcu的时钟在运行
dirtwillfly 发表于 2017-10-22 15:57 | 显示全部楼层
或者你运行一下官网的例程,看看还有没有这种情况
//******************************************************************************
//  MSP430G2xx3 Demo - WDT, Toggle P1.0, Interval Overflow ISR, 32kHz ACLK
//
//  Description: Toggle P1.0 using software timed by WDT ISR. Toggle rate is
//  exactly 250ms based on 32kHz ACLK WDT clock source.  In this example the
//  WDT is configured to divide 32768 watch-crystal(2^15) by 2^13 with an ISR
//  triggered @ 4Hz.
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO
//  //* External watch crystal installed on XIN XOUT is required for ACLK *//       
//
//                  MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 | 32kHz
//          --|RST          XOUT|-
//            |                 |
//            |             P1.0|-->LED
//
//  D. Dang
//  Texas Instruments Inc.
//  December 2010
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************

#include <msp430.h>


int main(void)
{
  WDTCTL = WDT_ADLY_250;                    // WDT 250ms, ACLK, interval timer
  IE1 |= WDTIE;                             // Enable WDT interrupt
  P1DIR |= 0x01;                            // Set P1.0 to output direction

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3 w/interrupt
}

// Watchdog Timer interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
#else
#error Compiler not supported!
#endif
{
  P1OUT ^= 0x01;                            // Toggle P1.0 using exclusive-OR
}
xiaoyaodz 发表于 2017-10-22 22:06 | 显示全部楼层
程序没有下载进去。
xiaoyaodz 发表于 2017-10-22 22:10 | 显示全部楼层
建议楼主使用msp430串口下载程序。
 楼主| 昊430 发表于 2017-10-23 08:20 | 显示全部楼层
dirtwillfly 发表于 2017-10-22 15:57
或者你运行一下官网的例程,看看还有没有这种情况
//*************************************************** ...

两种状态下的闪烁情况不一样,下载程序后运行是8秒灭,8秒亮;
仿真状态下差不多是0.5秒灭,0.5秒亮;
仿真状态下和正常运行时的时钟不一样吗?
 楼主| 昊430 发表于 2017-10-23 08:22 | 显示全部楼层
xiaoyaodz 发表于 2017-10-22 22:06
程序没有下载进去。

肯定下载进去了,要不然按下重启的瞬间小灯不能闪一下,那是我专门为了验证是不是下载程序加的一段,
 楼主| 昊430 发表于 2017-10-23 08:23 | 显示全部楼层
dirtwillfly 发表于 2017-10-22 15:56
不一样的。仿真模式下是上位机控制着mcu的时钟在运行

您的意思是仿真状态下全速运行的时钟和正常上电运行的时钟不一样吗?
dirtwillfly 发表于 2017-10-23 18:47 | 显示全部楼层
昊430 发表于 2017-10-23 08:20
两种状态下的闪烁情况不一样,下载程序后运行是8秒灭,8秒亮;
仿真状态下差不多是0.5秒灭,0.5秒亮;
仿 ...

恩,不一样的。仿真的时候是上位机在控制mcu的运行
youtome 发表于 2017-10-23 21:55 | 显示全部楼层
说明程序没有下载成功。
cemaj 发表于 2017-10-23 21:55 | 显示全部楼层
检测了时钟信号了吗
xiaoyaozt 发表于 2017-10-23 21:56 | 显示全部楼层
电压供电的问题吧。
youtome 发表于 2017-10-23 21:56 | 显示全部楼层
检查Flash是否完整?
xiaoyaozt 发表于 2017-10-23 21:56 | 显示全部楼层
在没有电源的情况下,可能供电不足。
cemaj 发表于 2017-10-23 21:56 | 显示全部楼层
可能直接运行的时候晶振不能正常工作。
linqing171 发表于 2017-10-24 12:10 | 显示全部楼层
供电是仿真器供的。
pkuzhx 发表于 2017-10-24 13:46 | 显示全部楼层
我觉得dirtwillfly说得对,你把delay设置的长一些再试试看。
for (i = 180; i>0; i--);只有这么点delay,肯定不够8s的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

984

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部