Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

请教各位关于MPS430f149使用串口0时 堆栈溢出

$
0
0

1.使用串口0接收外部模块发来的33个字节,使用波特率9600,模块每隔50ms发出一组33字节数据。

2.串口0使用中断方式接收数据,接收数据期间我将其他模块(ad,定时器)中断关闭以及关闭总中断,接收到正确数据后标志位uartflag置一,打开其他中断。

3.使用定时器隔2秒查询uartflag 进行数据分析。在这个情况下持续一段时间,堆栈会溢出,但功能没有问题

4. 更严重的是  :-------在切换到另个一状态时候,串口直接失去作用。

堆栈我已经设置为1024个

问题   如何合理的优化串口中断?在4中串口为什么失去作用?在切换到4状态时,初始化串口0都没有用,这个是为什么?

附带串口0中断程序

#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{

static uchar i=0,j=0;
_DINT(); //关闭总中断
RecDataBuf[i][j] = RXBUF0 ;//获取数据
if(j == 0 && RecDataBuf[i][0]!= 0x55)return; //舍弃帧头错误的数据
j++;
if(j == 11)
{
i++;
j = 0;
}
DatCount++;
if(DatCount == 33)
{
i = 0;
j = 0;
UartFlag =1;
DatCount = 0;
MPU0; //关闭MPU6050使能
TACTL |= TAIE; //打开定时器中断
TACCR0=32768; //计数周期为32768
ADC12IE = 0x01; // 使能ADC中断,采样端口6.0
}
_EINT(); //打开全局中断
}



Viewing all articles
Browse latest Browse all 3634

Trending Articles