MSPF627X 关于WDT,看门狗模式,怎么时钟源选择ACLK和VLO,结果都是VLO做时钟源的??ACLK通过IO引脚输出确实为32768Hz,看门狗时钟源选择ACLK,定时1秒,时间差不多有3秒多才复位,和选VLO做时钟源结果一个样!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
MSPF627X 关于WDT,看门狗模式,怎么时钟源选择ACLK和VLO,结果都是VLO做时钟源的??ACLK通过IO引脚输出确实为32768Hz,看门狗时钟源选择ACLK,定时1秒,时间差不多有3秒多才复位,和选VLO做时钟源结果一个样!
没有mspf627x的430.
应该是看门狗的配置不正确导致的。例如
WDTCTL = WDT_ADLY_250; // WDT 250ms, ACLK, interval timer
WDTCTL = WDTPW + WDTHOLD;
PJDIR |= BIT3;
PJSEL |= BIT3;
//PJDIR |= BIT0 | BIT1 | BIT3; // ACLK, MCLK, SMCLK set out to pins
//PJSEL |= BIT0 | BIT1 | BIT3; // PJ.0,1,3 for debugging purposes.
// Setup LFXT1
UCSCTL6 &= ~(XT1OFF); // XT1 On
UCSCTL6 |= XCAP_2; // Internal load cap ~8.5PF
// Loop until XT1 fault flag is cleared
do
{
UCSCTL7 &= ~XT1LFOFFG; // Clear XT1 fault flags
} while (UCSCTL7 & XT1LFOFFG); // Test XT1 fault flag
UCSCTL6 &= ~(XT1DRIVE_3); // XT1 stable, reduce drive strength
// Initialize DCO to MHz
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_3; // Set RSELx for DCO [0.64-1.51]
UCSCTL2 = 31; // Set DCO Multiplier for 1.048MHz
// (N + 1) * FLLRef = Fdco
// (31 + 1) * 32768 = 1.048MHz
// Set FLL Div = fDCOCLK/1
// Watchdog mode -> reset after expired time; WDT is clocked by ACLK
WDTCTL = WDT_ARST_1000; // SET BREAKPOINT HERE
// Set WDT Timer timeout 1s
// Setup P1.0 output
P2DIR |= BIT6; // Set P1.0 to output
P2OUT ^= BIT6; // Toggle P1.0
__bis_SR_register(LPM3_bits | GIE); // Enter LPM3
__no_operation(); // For debugger
}
基本上就是官方例程,3.几秒翻转一次,理论上应该是1秒。可以确保选的是ALCK做时钟源,且ACLK为32KHz
您好。我手上3块板子,按照你提供的代码修改后,有2块板子是1秒复位一次,但有一块板子不启动,卡在while (UCSCTL7&XT1LFOFFG); 处了。怎么回事呢?
另外,就是do {
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
} while (SFRIFG1&OFIFG); 我不判断标志,直接启动,ALCK,MCLK都有且正确,为什么WDT“自作主张”选择VLO,仿真看到的也是选择的ACLK,为什么呢??
补充一下,官方WDT例程都也没去判断SFRIFG的标志位,那照这样,岂不是官方例程有问题?因为按照官方例程操作,选择ALCK,1秒,结果却是3.几秒的,即内部把VLO做时钟源。