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

一原因:
原因是因为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);
	}
}

你可能感兴趣的:(STM32编程技巧)