OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5077|回复: 0

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

[复制链接]

9

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2016-7-18
在线时间
22 小时
发表于 2017-5-5 18:42:29 | 显示全部楼层 |阅读模式
5金钱
项目要开发使用某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]


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 10:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表