msp430f149:为什么我的Timer_A定时器中断一直都进不去啊?求各位大神指点指点!做了好几天了,都快哭了。

#include<msp430x14x.h>#defineuintunsignedint#defineucharunsignedchar#defineCPU_F((dou... #include <msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
#define CPU_F ((double)8000000)
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define PWM BIT3
static uint PWM_COUNT;
static uint PWM_count;
static int ENDING;
static int DIR_C;
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 8M
do
{
IFG1 &= ~OFIFG; //清除振荡错误标志
for(i = 0; i < 100; i++)
_NOP(); //延时等待
}
while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待
IFG1&=~OFIFG;
}
//////////////////////////////////////////////////////////////////
//步进电机驱动程序
//功能函数:脉冲输出设置Setup_pwm()子程序
// 脉冲输出开始Start_pwm()子程序
// 步进方向设置int_dirC()子程序
// 上电复位reset()子程序
// 比较器T0中断服务子程序:包含对电机加减速过程的控制
//////////////////////////////////////////////////////////////////
void Setup_pwm()
{
P2SEL|=PWM;//选择P23作为PWM输出
P2DIR|=PWM;
TACTL=0x00;
TACTL|=TACLR;//时钟源为SMCLK,8M,8分频,计数器清零
CCTL0=CCIE;
TACCR0=16384-1;//PWM信号周期125Hz
TACCR1=8192-1;//占空比1:1
TACCTL1=OUTMOD_7; //输出模式选择
PWM_count=0;
ENDING=1;
_EINT();
}
//////////////////////////////////////////////////////////////////
void Start_pwm()
{
TACTL|=TASSEL_2+ID_3+MC0;
while(ENDING)
{
_NOP();
}
}
//////////////////////////////////////////////////////////////////
void int_dirC(int x)
{
P2DIR|=BIT6;
if(x)
{
P2OUT=0x40;
}
else
{
P2OUT=0x00;
}
}
//////////////////////////////////////////////////////////////////
void reset()
{
ENDING=1;
PWM_COUNT=2400;
P5DIR|=BIT0; //reset先置低,延时1ms后置高
P5OUT=0x01;
delay_ms(1);
P5OUT=0x00;
delay_ms(1); //延时等待
P5OUT=0x01; //
_NOP();
_NOP();
_NOP();
Setup_pwm();
Start_pwm();
P5OUT=0x00;
}
//////////////////////////////////////////////////////////////////
#pragma vector=TIMERA0_VECTOR //定时器中断服务CCR0
__interrupt void CCR0_ISR(void)
{
if( ++PWM_count>= PWM_COUNT )
{
TACCR0=0;//stop tA
TACTL&=~MC1;
ENDING=0;
}
//_BIS_SR(LPM3_bits);
}
/////////////////////////////////////////////////////////////
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
int_clk(); //初始化时钟
//delay_ms(500);
reset();
DIR_C=1;
int_dirC(DIR_C);
Setup_pwm();
Start_pwm();
DIR_C=0;
int_dirC(DIR_C);
Setup_pwm();
Start_pwm();
_EINT();
LPM3;
while(1);//结束
}
展开
 我来答
匿名用户
2012-05-30
展开全部
放在华尔思的qq群里面讨论一下就行啦
追问
他们用430么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式