void timer_init(void){TA0CCTL0 = CCIE;// CCR0 interrupt enabledTA0CCR0 = 3200;TA0CTL = TASSEL_1 + MC_1 + TACLR;// ACLK, upmode, clear TAR } void Timer_Init(void){//定时器TIMER0初始化Timer_A_initUpModeParam initContParam0 = {0};initContParam0.captureCompareInterruptEnable_CCR0_CCIE=TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE ;//CCR0中断使能initContParam0.clockSource = TIMER_A_CLOCKSOURCE_ACLK;//时钟源位ACLK 32KHZinitContParam0.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;initContParam0.startTimer = false;initContParam0.timerClear = TIMER_A_DO_CLEAR; // 清除定时器initContParam0.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE; //关闭定时器A的溢出中断initContParam0.timerPeriod = 3200;//计数值100mSTimer_A_initUpMode(TIMER_A0_BASE, &initContParam0);Timer_A_startCounter(TIMER_A0_BASE,TIMER_A_CONTINUOUS_MODE);//A0开始计数 }
两个函数都是定时 100ms,但是程序运行结果不同。而且当我在打开定时器溢出中断的时候两个程序结构会相同,但程序就会不断开始重新执行执行。
user5112901:
用的是msp430f5529lp
灰小子:
楼主使用的什么型号的msp430?
两个程序的ACLK是否相同?有没有用io输出ACLK测量一下