我用CCR0中断可以,但是换成CCR1中断就不行了,难道CCR0与CCR1中断有什么不同?看了手册也没找到。还望高手指点啊!多谢了!
/***************************************************
程序功能:控制8个LED闪烁,用于测试下载功能是否正常
---------------------------------------------------
测试说明:观察LED闪烁
***************************************************/
#include <msp430x14x.h>
/****************主函数****************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
CCTL1 = CCIE; //使能CCR1中断
CCR1 = 2047; //设定周期0.5S
TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式
P2DIR = BIT5; //设置P2口方向为输出
P2OUT = BIT5;
_EINT(); //使能全局中断
LPM3; //CPU进入LPM3模式
}
/*******************************************
函数名称:Timer_A
功 能:定时器A的中断服务函数
参 数:无
返回值 :无
********************************************/
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= BIT5; //P2口输出取反
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
用做捕获时:捕获的同时TAR的值会传给CCRx,用来测算周期是很好的方法,一般捕获用法时无须设置参数。
用作比较时:CCR0一般用来设置输出电平的转换时机,就是TAR计数到CCR0时输出电平发生相应的变化(输出方式可以设置);也可以将CCR0设置为最大值,此时CCRx(x:1或2)用来设置输出电平转换的时机,即TAR计数到CCRx时输出电平转换,计数到CCR0时重新开始计数。
能解释下我的程序吗?为什么我用CCR0中断可以,但是换成CCR1中断就不行了?非常感谢!
一周热门 更多>