打印
[STM8]

STM8偶校验接收数据不对

[复制链接]
307|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 | 只看该作者
不是这个问题,降低也是这样

使用特权

评论回复
5
littlelida| | 2022-5-7 15:33 | 只看该作者
是不是配置问题呢,先把校验去掉

使用特权

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

本版积分规则

405

主题

7415

帖子

1

粉丝