查看: 1607|回复: 0

[其他] 通信错误OR标志如何清除

[复制链接]

该用户从未签到

6

主题

24

帖子

0

注册会员

Rank: 2

积分
63
最后登录
1970-1-1
发表于 2015-5-28 20:05:18 | 显示全部楼层 |阅读模式
通信过程中,发现SCI1S1的OR标志为一直1.采用中断接收。OR置位后,一直无法接收数据。
按DATASHEET中,读取SCI1S1/SCI1D后,应该会清除OR位。测试未正常清除。
有没有同学了解这一块的。
出错时寄存器如下:
SCI1C1 = 0
SCI1C2 = 0X24/0X2C
SCI1C3 = 0
SCI1S1 = 0XD8
SCI1S2 = 0X00/0X01

__interrupt VectorNumber_Vsci1rx void SCI_RX(void) //
{
byte  Data;                     /* Temporary variable for data */
    (void)SCI1S1;
Data = SCI1D;
}

__interrupt VectorNumber_Vsci1err void SCI_ERR1(void)
{
  (void)SCI1S1;                 /* Reset interrupt request flag */
(void)SCI1D;                  /* Dummy read of the SCI1D register to clear flags */
}


__interrupt VectorNumber_Vsci1tx void SCI_TX(void) //
{
    if ( UART_TxBufHead<=UART_TxBufTail )
  {
  (void)SCI1S1;                         /* Reset interrupt request flag */
  SCI1D =UART_TxBuf[UART_TxBufHead++]; //(byte)data;                   /* Store char to transmitter register */
  SCI1C2_TIE = 1;                       /* Enable transmit interrupt */  
}
    else
    {
  UART_TxBufHead = 0;
  UART_TxBufTail = 0;   
  SCI1C2_TIE = 0;                                  /* Disable transmit interrupt */
    }      
}
我知道答案 目前已有0人回答
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-9 19:29 , Processed in 0.083242 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表