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

C6748-UART中断无响应的情况

您好:
UART中断处理函数如下:
static unsigned char txArray[256];
static unsigned int length = sizeof(txArray) ;
static unsigned int count = 0;
static unsigned char receive_buf[128]={0};
unsigned char len = 0;
static void UARTIsr()
{
unsigned int int_id = 0; signed char retVal = -1;
int _id = UARTIntStatus(SOC_UART_0_REGS);
IntEventClear(SYS_INT_UART0_INT);
if(0x1 == int_id)
{
HWREG(SOC_UART_0_REGS+UART_THR)=txArray[count];
count++;
if(count>=length) {
count = 0;
UARTIntDisable(SOC_UART_0_REGS,UART_INT_TX_EMPTY);
}
}
if(0x2== int_id)
{
receive_buf[len] = HWREG(SOC_UART_0_REGS+UART_RHR);
len++;
len = len % 128;
SEM_post(handle);//触发上层接收数据线程
}
if(0x3== int_id)
{
while(UARTRxErrorGet(SOC_UART_0_REGS))
{
UARTCharGetNonBlocking(SOC_UART_0_REGS);
}
}
if(0x6== int_id)
{
UARTCharGetNonBlocking(SOC_UART_0_REGS);
}
}
1、接收中断和异常中断上电后一直使能
2、上层每秒钟发送txArray-buf中的固定数据,当把要发送的数据全部放到发送buf-txArray后,使能发送中断;
3、在开机30s左右给uart发送15个字节左右的数据,正常情况下数据的发送和接收都是正常的,当给uart发送的数据的速率与给定的波特率有偏差时,会触发错误中断,当进行压力试验时(多次重复做这种试验),会出现串口无响应的现象;
4、此时查看C6748停止输出时串口相应的寄存器,IER寄存器的值为0x7;IIR寄存器的值为0x6;LSR寄存器的值刚开始为0xFB,紧接着为0xF9;
希望 帮忙看看串口中断函数有无异常或操作不当地方的,谢谢!

Denny%20Yang99373:

建议把中断处理和函数简化一下看看。

特别是SEM_post这个能不能先去掉调试一下试试。

longkang jing:

回复 Denny%20Yang99373:

去掉SEM_post调试后,还是有问题,但是把异常中断使能关闭后就不再有这种现象了,不知道是为什么?

赞(0)
未经允许不得转载:TI中文支持网 » C6748-UART中断无响应的情况
分享到: 更多 (0)