首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

知道在哪跑飞,跑飞的详细原因有哪位高手能解释一下

2012-02-22 
知道在哪跑飞,跑飞的详细原因有谁能解释一下。今天出现这样的问题:将这个中断函数注释掉:#pragma vectorUS

知道在哪跑飞,跑飞的详细原因有谁能解释一下。

今天出现这样的问题:

将这个中断函数注释掉:

#pragma vector=USCI_B2_VECTOR
__interrupt void USCI_B2_ISR(void)
{
 // __bis_SR_register(0x0000);
  switch(__even_in_range(UCB2IV,4))
  {
  case 0: break; // Vector 0 - no interrupt
  case 2:
  // Vector 2 - RXIFG
  dat=UCB2RXBUF; // Test for correct character RX'd
 // __bis_SR_register(GIE); 
  break;
  case 4: break; // Vector 4 - TXIFG
  default: break;
  }
}


程序就会在红字处跑飞: 
void Fram_WR_ready()
{
  P2OUT |=BIT3;
  __delay_cycles(2000);
  
  //铁电寄存器操作(datasheet。Figure5)
  FM_CS_0; //选中铁电  
UCB2TXBUF = 0x06;//铁电寄存器写使能op-code
while (!(UCB2IFG&UCTXIFG)); __delay_cycles(40000);
  FM_CS_1;//不选中铁电;
  __delay_cycles(2000); 
}



相关的初始化:
void Fram_Init(void)
{
  P2DIR |= BIT3; // Set P10.3.6.7 to output direction
  P2OUT|=BIT3;
  P9SEL |= 0x0E; // P9.1.2.3 option select
  UCB2CTL1 |= UCSWRST; // **Put state machine in reset**
  UCB2CTL0 = UCMST+UCSYNC+UCMSB+UCCKPH; // 3-pin, 8-bit SPI master +UCCKPL
  // Clock polarity high, MSB
  UCB2CTL1 |= UCSSEL_1; //时钟选择
  UCB2BR0 = 0x58; //设置波特率
  UCB2BR1 = 0x14;  
  UCB2CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
  UCB2IE |= UCRXIE; // Enable USCI_A0 RX interrupt
}



[解决办法]
看看看门狗什么的
[解决办法]
因为你使能收中断了,而又没有指定收中断函数,收中断对应的向量没准是什么,可能是因为你一发对方回了数据,一执行中断向量处的东西就跑飞了。

热点排行