TI中文支持网
TI专业的中文技术问题搜集分享网站

请教各位关于MPS430f149使用串口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(); //打开全局中断}

Argun Lee:

补充:串口U0CRTl寄存器   RXERR  RXWAKE   OE三位标志一直是至高

Argun Lee:

回复 Argun Lee:

德州仪器的技术员不帮忙分析一下么? 给点指导意见也行啊  调了一个礼拜了

灰小子:

楼主你好。你说的问题三“堆栈溢出但功能没问题”,不理解这是什么状态,一般堆栈溢出程序会跑飞或者得到一些异常的变量等。

问题四的问题觉得是串口配置问题居多,建议提供完成的代码或工程。

另外,在你提供的这段中断服务程序中,看到了使能全局中断等操作,这会打开中断嵌套功能,造成堆栈溢出等异常情况,建议慎用中断嵌套

赞(0)
未经允许不得转载:TI中文支持网 » 请教各位关于MPS430f149使用串口0时 堆栈溢出
分享到: 更多 (0)