打印

stm32f4 串口(485) 发送完转接收会进入一次串口接收中断时什么原因

[复制链接]
227|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
社畜一枚|  楼主 | 2018-7-28 19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void USART_SendProcess(u8 uartNum)
{
  if(txDataCount[uartNum]<txDataLength[uartNum])
  {
    USART_SendData(uartX[uartNum],uartTxbuffer[uartNum][txDataCount[uartNum]]);
    txDataCount[uartNum]++;
  }
  else
  {
     USART_ITConfig(uartX[uartNum], USART_IT_TXE, DISABLE);
                        if(uartNum==RS485I)
                        {
                                EN485I(0);        
                        }else if(uartNum==RS485II)
                        {
                                EN485II(0);
                        }
     USART_ITConfig(uartX[uartNum], USART_IT_RXNE, ENABLE);//开启接收中断
  }

}

void USART2_IRQHandler(void)                        //串口2中断服务程序
{
        OSIntEnter();   
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  
        {
                USART_ReceiveProcess(1);
  }
  if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)
  {
      USART_SendProcess(1);
  }
  if (USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
  {
      USART_ClearFlag(USART2,USART_FLAG_ORE);    //读SR
      USART_ReceiveData(USART2);                 //读DR
  }
        OSIntExit();                                                                                          
}

发送完成后一开启接收中断 程序就会进入一次接收中断函数 导致第一个数据是0 怎么解决。希望大神指正。

使用特权

评论回复

相关帖子

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

本版积分规则

397

主题

401

帖子

0

粉丝