[STM8] STM8偶校验接收数据不对

[复制链接]
453|4
 楼主| xxrs 发表于 2022-5-6 20:37 | 显示全部楼层 |阅读模式
双机通信,使用偶校验,发送端正常
发送设置:
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;
  }
}
 楼主| xxrs 发表于 2022-5-6 20:39 | 显示全部楼层
接收端设置是否对?是什么问题????
 楼主| xxrs 发表于 2022-5-6 20:46 | 显示全部楼层
波特率设置搞了,单片机的处理速度跟不上,可能发生这种错误
 楼主| xxrs 发表于 2022-5-6 20:50 | 显示全部楼层
不是这个问题,降低也是这样
littlelida 发表于 2022-5-7 15:33 | 显示全部楼层
是不是配置问题呢,先把校验去掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

405

主题

7415

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部