CORTEX M4技术问题指教



我把一个UART的例子移植到M4上了,显示屏有显示了,串口测试结果:按复位键上位机能收到数据,但是上位机发数据,显示屏上没有显示,用示波仪测量相应的RX/TX端口都有数据的波形变化。调试程序时发现UARTIntHandler(void)中断服务函数没响应(STARTUP里面已经注册好串口的中断处理了,UART0的IO也定义和配置好了,接收超时中断和接收中断都使能了),

以下是中断处理函数:

void

UARTIntHandler(void)

{

   unsigned long ulStatus;

   //

   // 获取中断状态

   //

   ulStatus = UARTIntStatus(UART0_BASE, true);

   //

   // 清中断

   //

   UARTIntClear(UART0_BASE, ulStatus);

   //

   // 读FIFO到空

   //

   while(UARTCharsAvail(UART0_BASE))

   {

      *pbuff++=UARTCharGetNonBlocking(UART0_BASE); //放入RecBuff中

     RecNum++;                                    //接收数据个数加1

   }

   if(ulStatus&UART_INT_RT)//接收超时时,去main里显示接收到内容

   RecFlag=TRUE;           //置超时标记

}

以下是显示函数:

while(1)

   {

     if(RecFlag)     //当把RecFlag改为:(RecFlag==0)时,下面的代码才能运行,在中断设断断了没有停下来,说明中断服务函数未响应。

     {

       RecFlag=FALSE;

       //显示接收到的字符

       GrContextForegroundSet(&g_sContext,ClrBlack);

       GrRectFill(&g_sContext, &sRect);

       GrContextForegroundSet(&g_sContext, ClrWhite);

       GrContextFontSet(&g_sContext, &g_sFontCm20);

       GrStringDraw(&g_sContext, RecBuff,RecNum, 150, 165, 0);  

       //发送接收到的字符

       UARTSend(RecBuff, RecNum);

       //清本次接收到的数据和数据个数,准备下一次接收

       RecNum=0;

       pbuff=RecBuff;

     }

     OSTimeDlyHMSM(0,0,0,50);

   }

请帮忙分析是什么原因。谢谢!