定时中断那一部分一直报错,输出不了SPWM波形,下面是我的程序
#include"msp430g2553.h"
#define cSMCLK 12000000
#define SIN_F 200 //定义输出正弦波频率为200hz
#define SIN_NUM 16 //定义正弦波查表采样点数
const unsigned int sin_table[SIN_NUM]={64,88,108,122,127,122,108,88,64,39,19,5,0,5,19,39};
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
BCSCTL1 = CALBC1_12MHZ; //设置定时器时钟为12mhz
DCOCTL = CALDCO_12MHZ; //DCO频率设置为12mhz
DCOCTL = DCOCTL&0xE0; //关闭震荡
TA1CTL= TASSEL_2+MC_1; //TA1设置为增计数模式,时钟为SMCLK(12mhz)
TA1CCTL1|= OUTMOD_7; //TA1模块设置为模式7输出
P2SEL|= BIT1;
P2DIR|= BIT1; //P2.1为输出口
TA1CCR0=128; //pwm周期为128hz
Timer0_A_lnit();
}
void Timer0_A_lnit()
{
TA0CCTL0 = CCIE;
TA0CCR0 = cSMCLK/SIN_F/SIN_NUM;
TA0CTL= TASSEL_2 + MC_1; //TA0为增计数模式,时钟为SMCLK(12mhz)
_EINT(); //开中断
}
//读表
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer0_A0_(void)
{
_disable_interrupts();
Change_Duty;
__enable_interrupts();
}