打印
[应用相关]

STM32移植FreeModbus串口合适但是485不合适的解决方法

[复制链接]
700|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
磨砂|  楼主 | 2021-9-7 08:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一原因:
原因是因为485相比串口多了一个发送接收控制。
二解决方法:
将发送/接收控制放到freeModbus中让FreeModbus自己控制发送接收,主要在vMBPortSerialEnable这个函数中修改,具体如下:

void
vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )
{
    /* If xRXEnable enable serial receive interrupts. If xTxENable enable
     * transmitter empty interrupts.
     */
        if(xRxEnable == TRUE)
        {
                modbus_receive_en();   //开接收中断的时候接收使能
                USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
        }
        else
        {
                USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
        }
       
        if(xTxEnable == TRUE)
        {
                modbus_send_en();        //开发送中断的时候发送使能
                USART_ITConfig(USART2, USART_IT_TC, ENABLE);
        }
        else
        {
                USART_ITConfig(USART2, USART_IT_TC, DISABLE);
        }
}


使用特权

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

本版积分规则

94

主题

4126

帖子

2

粉丝