原创 PIC24单片机的串口帧错处理

2009-4-2 09:16 2683 5 3 分类: MCU/ 嵌入式

目前在很多单片机中,都提供了帧错标志位。就是当串口发生错误时,如没有收到停止位、缓冲区溢出等,给出特定错误标志位,提示串口出现了问题。


 


在大部分单片机中,不处理帧错是没有关系的,并不会产生其他影响。但是在PIC单片机中(包括PIC18系列和PIC24系列)却不是这样的,如果不处理帧错,那么串口将停止工作,不能接收发送数据,直到处理了帧错问题后才恢复。


 


在PIC24单片机中,处理帧错是比较简单的,它有专门的帧错中断。比如对于串口1(串口号从0开始计算),对应的帧错中断是:


 


        _U2ErrInterrupt


 


先在初始化中允许串口中断和帧错中断:


 


  _U2RXIE = 1;           // 允许串口1接收中断
  _U2TXIE = 1;           // 允许串口1发送中断
  _U2ERIE = 1;           // 允许串口1帧错中断



 


然后在中断理重新设置一下串口:


 


#define ISR(mode) __attribute__((interrupt, mode))


void ISR(auto_psv) _U2ErrInterrupt()
{
  _U2ERIF = 0
  U2MODE = 0;      // 停止串口
  Nop();
  UART1_init();    // 重新初始化串口
}


 


哪些情况下容易产生帧错呢?一个是上电的时候;在就是在有干扰的环境下以及线缆接触不好的情况(插拔线缆的时候)。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条