MSP430f5310采用3v电压供电,SMCLK=MCLK=8MHZ,ALCK=32.768KHZ,复位电路采用10k和1nf串联,采用MSP-FET430UIF调试器4线(VCC,GND,TEST,RST)调试,问题程序会在调试过程中跑飞,不知道问题出在什么地方?程序和调试图见下面。
程序:
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
P5SEL |= BIT4|BIT5; // Select XT1
UCSCTL6 &= ~(XT1OFF); // XT1 On
UCSCTL6 |= XCAP_3; // Internal load cap
UCSCTL3 = 0; // FLL Reference Clock = XT1
{
UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
UCSCTL6 &= ~(XT1DRIVE_3); // Xtal is now stable, reduce drive strength
UCSCTL4 |= SELA_0; // ACLK = LFTX1 (by default)
__bis_SR_register(SCG0); // Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_5; // Set RSELx for DCO = 8MHz
UCSCTL2 |= 243; // Set DCO Multiplier for 8MHz
// (N + 1) * FLLRef = Fdco
// (243 + 1) * 32768 = 8MHz
__bic_SR_register(SCG0); // Enable the FLL control loop
__delay_cycles(250000);
while(1); // For debugger
}
灰小子:
能定位到是在哪句代码跑飞了吗?
user4234806:
回复 灰小子:
是程序跑了一段时间,我 点了暂停就变成这样了,单步调试没问题。一全速然后点停止就有问题了。
user4234806:
回复 user4234806:
不可以定位,他回到了程序的起始位置
user4234806:
回复 user4234806:
单步调试没问题,从全速到点击停止运行出现的问题。
Maka Luo:
首先 你需要单步调试一下,看看那里导致其程序跑飞的?
Ling Zhu2:
建议加一个LED 指示,然后然程序free run。 你在调试过程中全速跑,忽然暂停可能会出问题的。
user4234806:
回复 Ling Zhu2:
工程师,你好,可能我说的不够详细。我是在在线调试过程中,free run ,手动暂停会出现跑飞现象。请问我怎么解决。。。。。
Maka Luo:
回复 user4234806:
单步运行,看看那条代码出现跑飞。
或者设置断点在程序中,逐个分析一下。
user4234806:
回复 Maka Luo:
在线调试:程序单独设置断点没问题都可以正常运行,不会出现跑飞现象。一旦全速运行,过一段时间点击停止,程序就会出现我发的图片那样跑飞。如果不点击停止,程序在线调试运行一段时间就会死机(上面程序我改成了,最简单的LED灯闪烁,还是出现这样问题,我怀疑是不是硬件的问题?可我又不知道怎么操作,第一次使用这个芯片)