#include <msp430.h>
void SetHC(unsigned char BCD,unsigned char SEG){
//这里是SPI代码
}
int main(void)
{
//初始化配置
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL2 = SELM_0 | DIVM_0 | DIVS_3;
DCOCTL = 0x00;
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
BCSCTL1 |= XT2OFF | DIVA_3;
BCSCTL3 = XT2S_0 | LFXT1S_0 | XCAP_1;
TA0CCTL0 = CCIE;
CCR0 = 1023;
TACTL = TASSEL_1 + ID_2 + MC_1 + TAIE;
USICTL0 |= USISWRST;
USICTL0 = USIPE6 + USIPE5 + USIMST + USIOE + USISWRST;
USICTL1 = USIIE + USIIFG;
USICKCTL = USIDIV_7 + USISSEL_2 + USICKPL;
USICTL0 &= ~USISWRST;
P1SEL = BIT5 + BIT6;
P2DIR = BIT0
for(;;){
//这里填满了SetHC(x,x);
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR_HOOK(void)
{
//有几行定时器函数
_bic_SR_register_on_exit(LPM3_bits);
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR_HOOK(void)
{
//溢出中断(用不上,ULP推荐写)
_bic_SR_register_on_exit(LPM3_bits);
}
#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
{
__bic_SR_register_on_exit(LPM1_bits);
USICTL1 &= ~USIIFG;
}
运行一段时间后,就死机了,表现为代码不往下执行,用JTAG看,停在一个中断(TIMER0_A0_ISR_HOOK)里面.TA0IV = 0X00;其他中断标记也没有.
求解,MCU:G2452 USI