串口接收参数后通过定时器控制DA输出波形,脉冲产生都是正常的,关闭的时候是这样:
串口收到h后关闭定时器,将DA输出为1.25V
实际结果是收到h后DA输出定时器的第二个中断里的值,不是DA的设置值:DAC_H_AL=0000,收到h后输出的是0000而不是串口里的DAC12_0DAT = 0x800;
烦请各位大佬帮我看看怎么修改,谢谢
定时器初始化:
void TAstart(void)//高频使用的定时器TA
{
TACTL = TASSEL_2 + MC_1 + TAIE + ID_3; //默认的smclk为8m,3分频后1m,一个tick为1us
TACCTL1 |= CCIE;
TA0CCR1 = H_WH; //计时到脉冲持续时间结束,case ccr1 输出正脉冲
TACCTL0 |= CCIE;
TA0CCR0 = H_WH + H_WL; //周期时间=正脉宽+负脉宽,ccro对应 TIMERA0_VECTOR
}
定时器中断:
#pragma vector = TIMERA0_VECTOR //ccr0的周期定时时间到
__interrupt void Timer_A0(void)
{
DAC12_0DAT = DAC_H_AH;
}
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
switch(TAIV) //需要判断第几个定时中断
{
case 2: DAC12_0DAT = DAC_H_AL;break;
default: break;
}
}
串口接收中断回调里的停止标记:
case 'h': //高频停止输出
TA0CCR0 = 0; //这里试过很多关定时器的方法都是一样的结果
TACTL = MC_0; //停止模式
TACTL &= ~(TAIE + TAIFG);
DAC12_0DAT = 0x800; //输出1.25V
Print_Str("TA H DAC0 STOP!\r\n");
break;