您现在所在的是:

电工技术

回帖:0个,阅读:305 [上一页] [1] [下一页]
880
tkbin
文章数:77
年度积分:50
历史总积分:880
注册时间:2012/6/25
发站内信
发表于:2013/2/25 16:28:40
#0楼
目前在很多单片机中,都提供了帧错标志位。就是当串口发生错误时,如没有收到停止位、缓冲区溢出等,给出特定错误标志位,提示串口出现了问题。



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



PIC单片机中,处理帧错是比较简单的,它有专门的帧错中断。比如对于串口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(); // 重新初始化串口
}



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

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

31.2002