打印
[STM8]

STM8偶校验接收数据不对

[复制链接]
464|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
因火生烟|  楼主 | 2020-4-18 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
双机通信,使用偶校验,发送端正常
发送设置:
void  uart1_init(void)//8M
{
UART1_CR1=0x00;//TXD(PD5)设置为输出,RXD(PD6)为输入
UART1_CR2=0x00;
UART1_CR3=0x00;
UART1_BRR2 = 0x05;
UART1_BRR1 = 0x04;     //115200波特率
UART1_CR2_TEN = 1;     //允许发送
UART1_CR1_M=1;//发送9位数据,1个起始位,一个停止位  
UART1_CR1_PCEN=1;//奇偶校验控制被使能。
//UART1_CR2_REN = 1;     //允许接收
//UART1_CR2_RIEN = 1;    //接收中断使能
}

接收端设置:
void  uart1_init(void)//偶校验
{
UART1_CR1=0x00;//TXD(PD5)设置为输出,RXD(PD6)为输入
UART1_CR2=0x00;
UART1_CR3=0x00;
UART1_BRR2 = 0x05;
UART1_BRR1 = 0x04;     //115200波特率
UART1_CR2_TEN = 1;     //允许发送
UART1_CR2_REN = 1;     //允许接收
UART1_CR2_RIEN = 1;    //接收中断使能
UART1_CR1_M=1;//发送9位数据,1个起始位,一个停止位  
UART1_CR1_PCEN=1;//奇偶校验控制被使能。
}
接收中断:(接收到的数据和发送的数据不一致)
#pragma   vector = UART1_R_RXNE_vector
__interrupt void uart1rxd(void)
{
  static unsigned char RI_num;
  unsigned char RXD_data;
  RXD_data=UART1_SR; //清除 PE 标志位
  SBUF_dat[RI_num++]=UART1_DR; //读RXD_data时,就可以把RXNE标志清0
  if(RI_num==code_num)
  {
   RXD_OK=1;
   RI_num=0;
  }
}



使用特权

评论回复
沙发
因火生烟|  楼主 | 2020-4-18 21:51 | 只看该作者
接收端设置是否对?是什么问题????

使用特权

评论回复
板凳
因火生烟|  楼主 | 2020-4-20 15:11 | 只看该作者
求高人指点指点

使用特权

评论回复
地板
wziyi| | 2020-4-25 16:59 | 只看该作者
波特率设置搞了,单片机的处理速度跟不上,可能发生这种错误

使用特权

评论回复
5
因火生烟|  楼主 | 2020-4-25 17:07 | 只看该作者
wziyi 发表于 2020-4-25 16:59
波特率设置搞了,单片机的处理速度跟不上,可能发生这种错误

不是这个问题,降低也是这样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

167

帖子

8

粉丝