int __low_level_init(void)
{
float dataR[1024]={0};
float dataI[1024]={0};
constfloat sin_tab[1024]={.....};
constfloat cos_tab[1024]={.....};
return (1);
}
然后在
__low_level_init();
void main(void)
.....
这样用吗? 请教!
解决方法:
//防止在编译的时候狗复位
__low_level_init(){
WDTCTL = WDTPW + WDTHOLD;
}
八、CCP捕获问题
void Init_Ta0(void){
P11DIR |= BIT0 + BIT1 + BIT2;// ACLK ,MCLK ,sMCLK输出方向
P11SEL |= BIT0 + BIT1 + BIT2;
P1DIR |= BIT0;
P2DIR&= ~BIT1;
P2SEL|=BIT1;//配置输入脚的第二功能ccr0捕获
TA0CCTL0&=~(CCIS0+CCIS1);//CCIXA捕获
TA0CCTL0 |= CM_3 + SCS + CAP;//在上升沿和下降沿都进行捕获 ,同步信号捕获,捕获模式
TA0CTL=TASSEL_2;//SMCLK,
//TA0CTL|=ID_3;//输入信号分频
TA0CTL|=MC_2;//定时器开始计数(连续计数模式0~0xFFFF)
TA0CTL|=TACLR;//计数器清除
TA0CCTL0 |= CCIE;
_EINT();
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A0(void){
if(TA0CCTL0 & CM1)//捕获到下降沿
{
TA0CTL|= TACLR;//清定时器
TA0CCTL0=(TA0CCTL0&(~CM1))| CM0;//改为上升沿捕获:CM1置零,CM0置一
}
else if(TA0CCTL0 & CM_0)//捕获到上升沿
{
width= TA0CCR0;//记录下结束时间
TA0CCTL0=(TA0CCTL0&(~CM0))| CM1;//改为下降沿捕获:CM0置零,CM1置一
}
}
void main(void){
WDTCTL = WDTPW + WDTHOLD;//关看门狗
P7SEL|= 0x03;// XT1 开始振荡
UCSCTL1 |= DCORSEL_2;// 选择DCO频率范围
UCSCTL3 |= SELREF__REFOCLK;// 选择 Fll 参考频率 REFO
UCSCTL4 = SELM__DCOCLK + SELA__XT1CLK + SELS__DCOCLKDIV;// 配置 MCLK = DCOC,SMCLK =DCODIV,ACLK=XT1
while (SFRIFG1 & OFIFG)//清除 OFIFG,andXT1OFFG ,DCOFFG
{
UCSCTL7 &= ~(XT1LFOFFG + DCOFFG);
SFRIFG1 &= ~OFIFG;
}
while(1){
P1OUT ^= BIT0;//LED 闪烁,说明没有晶体失效
for(unsignedint i=60000;i>0;i--);