【STM32F429学习笔记】rs485使用问题

2019-07-20 14:48发布

项目要开发使用某rs485通信传感器,采用原子哥的开发板实现通信过程中,发现只能发送一次请求指令,得到一次返回数据。查看寄存器发现USART->SR的值为0x00000010;TC位和TXE位均不为1;继而查看USART->CR1的值为0x0020;发现接受和发送均未使能。收发代码如下,我在RS485_Send_Data函数中加入USART2->CR1=0x202c;每次都置位CR1寄存器,才正常工作。求解答原因。
[mw_shl_code=c,true]void USART2_IRQHandler(void)
{
        u8 res;            
        if(USART2->SR&(1<<5))//接收到数据
        {         
                res=USART2->DR;
      }
}
void RS485_Send_Data(u8 *buf,u8 len)
{
        cnt++;
        u8 t;
        RS485_TX_Set(1);                        //设置为发送模式
          for(t=0;t<len;t++)                        //循环发送数据
        {
                USART2->CR1=0x202c;
                while((USART2->SR&0X40)==0);//等待发送结束                  
                USART2->DR=buf[t];       
        }         
        while((USART2->SR&0X40)==0);//等待发送结束       
        RS485_RX_CNT=0;          
        RS485_TX_Set(0);                        //设置为接收模式       
}

[/mw_shl_code]


0条回答

一周热门 更多>