mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-18 22:52:17 +08:00
[components][freemodbus] update function : xMBPortSerialInit(...) and xMBMasterPortSerialInit(...) | 更新 xMBPortSerialInit() 与 xMBMasterPortSerialInit() 函数
This commit is contained in:
parent
0dae909f66
commit
3dd64da78b
@ -52,6 +52,7 @@ static void serial_soft_trans_irq(void* parameter);
|
|||||||
BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
||||||
eMBParity eParity)
|
eMBParity eParity)
|
||||||
{
|
{
|
||||||
|
rt_device_t dev = RT_NULL;
|
||||||
/**
|
/**
|
||||||
* set 485 mode receive and transmit control IO
|
* set 485 mode receive and transmit control IO
|
||||||
* @note MODBUS_SLAVE_RT_CONTROL_PIN_INDEX need be defined by user
|
* @note MODBUS_SLAVE_RT_CONTROL_PIN_INDEX need be defined by user
|
||||||
@ -60,22 +61,28 @@ BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
|||||||
rt_pin_mode(MODBUS_SLAVE_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT);
|
rt_pin_mode(MODBUS_SLAVE_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT);
|
||||||
#endif
|
#endif
|
||||||
/* set serial name */
|
/* set serial name */
|
||||||
if (ucPORT == 1) {
|
if (ucPORT == 1)
|
||||||
#if defined(RT_USING_UART1) || defined(RT_USING_REMAP_UART1)
|
{
|
||||||
extern struct rt_serial_device serial1;
|
dev = rt_device_find("uart1");
|
||||||
serial = &serial1;
|
|
||||||
#endif
|
|
||||||
} else if (ucPORT == 2) {
|
|
||||||
#if defined(RT_USING_UART2)
|
|
||||||
extern struct rt_serial_device serial2;
|
|
||||||
serial = &serial2;
|
|
||||||
#endif
|
|
||||||
} else if (ucPORT == 3) {
|
|
||||||
#if defined(RT_USING_UART3)
|
|
||||||
extern struct rt_serial_device serial3;
|
|
||||||
serial = &serial3;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
else if (ucPORT == 2)
|
||||||
|
{
|
||||||
|
dev = rt_device_find("uart2");
|
||||||
|
}
|
||||||
|
else if (ucPORT == 3)
|
||||||
|
{
|
||||||
|
dev = rt_device_find("uart3");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dev == RT_NULL)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
serial = (struct rt_serial_device*)dev;
|
||||||
|
}
|
||||||
|
|
||||||
/* set serial configure parameter */
|
/* set serial configure parameter */
|
||||||
serial->config.baud_rate = ulBaudRate;
|
serial->config.baud_rate = ulBaudRate;
|
||||||
serial->config.stop_bits = STOP_BITS_1;
|
serial->config.stop_bits = STOP_BITS_1;
|
||||||
|
@ -53,6 +53,7 @@ static void serial_soft_trans_irq(void* parameter);
|
|||||||
BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
||||||
eMBParity eParity)
|
eMBParity eParity)
|
||||||
{
|
{
|
||||||
|
rt_device_t dev = RT_NULL;
|
||||||
/**
|
/**
|
||||||
* set 485 mode receive and transmit control IO
|
* set 485 mode receive and transmit control IO
|
||||||
* @note MODBUS_MASTER_RT_CONTROL_PIN_INDEX need be defined by user
|
* @note MODBUS_MASTER_RT_CONTROL_PIN_INDEX need be defined by user
|
||||||
@ -60,23 +61,27 @@ BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
|||||||
#if defined(RT_MODBUS_MASTER_USE_CONTROL_PIN)
|
#if defined(RT_MODBUS_MASTER_USE_CONTROL_PIN)
|
||||||
rt_pin_mode(MODBUS_MASTER_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT);
|
rt_pin_mode(MODBUS_MASTER_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* set serial name */
|
/* set serial name */
|
||||||
if (ucPORT == 1) {
|
if (ucPORT == 1)
|
||||||
#if defined(RT_USING_UART1) || defined(RT_USING_REMAP_UART1)
|
{
|
||||||
extern struct rt_serial_device serial1;
|
dev = rt_device_find("uart1");
|
||||||
serial = &serial1;
|
}
|
||||||
#endif
|
else if (ucPORT == 2)
|
||||||
} else if (ucPORT == 2) {
|
{
|
||||||
#if defined(RT_USING_UART2)
|
dev = rt_device_find("uart2");
|
||||||
extern struct rt_serial_device serial2;
|
}
|
||||||
serial = &serial2;
|
else if (ucPORT == 3)
|
||||||
#endif
|
{
|
||||||
} else if (ucPORT == 3) {
|
dev = rt_device_find("uart3");
|
||||||
#if defined(RT_USING_UART3)
|
}
|
||||||
extern struct rt_serial_device serial3;
|
|
||||||
serial = &serial3;
|
if(dev == RT_NULL)
|
||||||
#endif
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
serial = (struct rt_serial_device*)dev;
|
||||||
}
|
}
|
||||||
/* set serial configure parameter */
|
/* set serial configure parameter */
|
||||||
serial->config.baud_rate = ulBaudRate;
|
serial->config.baud_rate = ulBaudRate;
|
||||||
@ -211,6 +216,12 @@ static void serial_soft_trans_irq(void* parameter) {
|
|||||||
RT_WAITING_FOREVER, &recved_event);
|
RT_WAITING_FOREVER, &recved_event);
|
||||||
/* execute modbus callback */
|
/* execute modbus callback */
|
||||||
prvvUARTTxReadyISR();
|
prvvUARTTxReadyISR();
|
||||||
|
/* waiting for serial transmit start */
|
||||||
|
// if (rt_event_recv(&event_serial, EVENT_SERIAL_TRANS_START, RT_EVENT_FLAG_OR,RT_WAITING_FOREVER, &recved_event) == RT_EOK )
|
||||||
|
// {
|
||||||
|
// /* execute modbus callback */
|
||||||
|
// prvvUARTTxReadyISR();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user