使用的是IAR 5.30 ,程序下载后可以运行,SMCLK不工作,去掉仿真器重新上电正常运行!
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.
使用TI历程测试现象一样!
#include <msp430afe253.h>
unsigned volatile int count = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P2DIR |= BIT0; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= BIT0; // Toggle P1.0
CCR0 += 50000; // Add Offset to CCR0
}
楼主,
你好,这里想先了解一下,在debug状态下程序是否可以正常运行?退出debug之后再连接仿真器的情况下重新上电,板子是否可以正常运行?
你好,
请问你看到的出错的现象是什么?你是怎么判断SMCLK有没有工作的?
我测试SMCLK是否工作是通过:
1,Timer_A 控制LED指示灯,在Debug状态下看是否中断。LED是否闪烁,测试程序如下;
#include <msp430afe253.h>
unsigned volatile int count = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P2DIR |= BIT0; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= BIT0; // Toggle P1.0
CCR0 += 50000; // Add Offset to CCR0
}
2,使用P1.0输出SMCLK,在Debug状态下没有输出,重新上电可以正常输出,通过示波器观察。
3,使用SD24_A测试不进如中断,
#pragma vector = SD24_VECTOR
__interrupt void SD24AISR(void)
{
switch (SD24IV)
{
case 2: // SD24MEM Overflow
break;
case 4: // SD24MEM0 IFG
break;
case 6: // SD24MEM1 IFG
break;
case 8: // SD24MEM2 IFG
Ch0results[Chcount] = SD24MEM0; // Save CH0 results (clears IFG)
break;
}
}
测试的例程如下,P2.0接有一个LED发光二极管,测试结果LED发光二极管没有闪烁。
#include <msp430afe253.h>
unsigned volatile int count = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P2DIR |= BIT0; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
_EINT();
// _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
while(1);
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= BIT0; // Toggle P1.0
CCR0 += 50000; // Add Offset to CCR0
}