打印
[STM8]

STM8偶校验接收数据不对

[复制链接]
322|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
那就是你的|  楼主 | 2022-5-15 17:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 那就是你的 于 2022-5-15 17:46 编辑

双机通信,使用偶校验,发送端正常
发送设置:
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;
  }
}

使用特权

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

本版积分规则

8

主题

8

帖子

0

粉丝