这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » UART UART进入中断服务程序了,中断标志没有置位?

共2条 1/1 1 跳转至

UART UART进入中断服务程序了,中断标志没有置位?

院士
2006-09-17 18:14:16     打赏
UART UART进入中断服务程序了,中断标志没有置位?



关键词: 进入     中断     服务     程序     标志     没有     置位    

院士
2006-12-22 22:43:00     打赏
2楼
问 运行实验教程中DATARET.C的程序,此程序接收中断使能,FIFO设置的是8个字节。但当我发送少于8个字节的时,也能进入到中断服务程序。我把断点设到中断服务程序的第一句上观察,中断标志寄存器U0IIR(地址:0xE000C008)为0xC1,表示的应该是无中断类型(U0IIR[3:0]= 0001),既然无中断类型为什么还会进入到中断服务程序呢?我开始认为应该U0IIR[3:0]= 1100才对,表示字符超时。
以下是中断服务程序:

void   __irq IRQ_UART0(void)
{  uint8  i;
     
   if( 0x04==(U0IIR&0x0F) )
   rcv_new = 1;// 设置接收到新的数据标志
   for(i=0; i<8; i++)
   { rcv_buf[i] = U0RBR;                  // 读取FIFO的数据,并清除中断标志
   }
   
   VICVectAddr = 0x00;                  // 中断处理结束   
}               
1: re:  请不要使用Memory观察窗口(观察E000C000),因为它会读取U0RBR,导致U0IIR的值变化了(清除中断标志)。
  在中断服务程序中读取U0IIR到一个全局变量中观察。 2: 原来如此,谢谢!

共2条 1/1 1 跳转至

回复

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