这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » CSPY 请问:我在CSPY中调试串口通信的时候,在接收中断子程序入口处我设了一

共2条 1/1 1 跳转至

CSPY 请问:我在CSPY中调试串口通信的时候,在接收中断子程序入口处我设了一个中断,结果却出了问题?请问为什么

院士
2006-09-17 18:14:16     打赏
CSPY 请问:我在CSPY中调试串口通信的时候,在接收中断子程序入口处我设了一个中断,结果却出了问题?请问为什么



关键词: 请问     我在     调试     串口     通信     时候     接收     中断         

院士
2006-12-22 22:43:00     打赏
2楼
问 我在CSPY中调试串口通信的时候,在接收中断子程序入口处我设了一个断点,然后从上位机发送数据,可为什么在断点处不中断呢, 1: 能看看你的代码? 2: interrupt[UART0RX_VECTOR] void usart0_rx(void)
{
uchar i,j;
ADC12IE=0x00;
IFG1|=URXIFG0;
if((URXIFG0&IFG1)!=0)
{
if(RXBUF0==0xeb) //向上位机发送采集数据(BCD码方式从高位到低位传送)
{
for(i=0;i<BITS;i++)
{
TXBUF0=uart_data[BITS-i-1];
while((UTCTL0&TXEPT)==0);
}
}

//接受上位机发送的RATE

if(RXBUF0==0xff)
{
for(j=0;j<6;j++)
{
Rx_Data[i]=RXBUF0;
Rx_Buffer[j]=Rx_Data[j]; //复制接收数据

}
rate=Rx_Buffer[0]*1000+Rx_Buffer[1]*100+Rx_Buffer[2] *10+Rx_Buffer[3]+Rx_Buffer[4]/10+Rx_Buffer[5]/100;

}

if(RXBUF0==0xb2)
{
for(i=0;i<RAM_index;i++)
{
TXBUF0=*(piRAM+i);
while((UTCTL0&TXEPT)==0);
}
}
}
IFG1&=~URXIFG0;
ADC12IE=0x08;
} 3: 是否进中断和中断服务程序没有关系啊。
还是用例程(uart)先测试您的硬件是否完好。剩下的就好做了。 4: 硬件出问题的可能性比较小吧,因为有时可以进入中断,有时就会出现问题 5: 比较简单的测试方法是用下面的程序,上位机可以随便找个串口精灵什么的不断向下发送数据,如果能得到正确的返回数据就可以了。
#include <MSP430x14x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCTL0 = CHAR; // 8-bit character
UTCTL0 = SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; //
UMCTL0 = 0x6B; // Modulation
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
IE1 |= URXIE0; // Enable USART0 RX interrupt
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x10; // P3.4 output direction
_EINT(); // Enable interrupts

// Mainloop
for (;;)
{
_BIS_SR(LPM3_bits); // Wait in LPM3 until character RXed
while ((IFG1 & UTXIFG0) == 0); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
}

// UART0 RX ISR will for exit from LPM3 in Mainloop
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
} 6: 我再查查,谢谢刘工

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]