diff options
| author | tangweikang <[email protected]> | 2019-05-15 12:03:03 +0800 |
|---|---|---|
| committer | tangweikang <[email protected]> | 2019-05-15 12:03:03 +0800 |
| commit | 3dd64da78b5ab4785933dc256b6f9c2846599483 (patch) | |
| tree | 167e36229c40eeaf291f27dd1237f721026fed55 /components | |
| parent | 0dae909f66d72323f031c4c14162f32723f3effe (diff) | |
[components][freemodbus] update function : xMBPortSerialInit(...) and xMBMasterPortSerialInit(...) | 更新 xMBPortSerialInit() 与 xMBMasterPortSerialInit() 函数
Diffstat (limited to 'components')
| -rw-r--r-- | components/net/freemodbus/port/portserial.c | 37 | ||||
| -rw-r--r-- | components/net/freemodbus/port/portserial_m.c | 43 |
2 files changed, 49 insertions, 31 deletions
diff --git a/components/net/freemodbus/port/portserial.c b/components/net/freemodbus/port/portserial.c index 7c546a1691..775ce6db28 100644 --- a/components/net/freemodbus/port/portserial.c +++ b/components/net/freemodbus/port/portserial.c @@ -52,6 +52,7 @@ static void serial_soft_trans_irq(void* parameter); BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity) { + rt_device_t dev = RT_NULL; /** * set 485 mode receive and transmit control IO * @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); #endif /* set serial name */ - if (ucPORT == 1) { -#if defined(RT_USING_UART1) || defined(RT_USING_REMAP_UART1) - extern struct rt_serial_device serial1; - 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 + if (ucPORT == 1) + { + dev = rt_device_find("uart1"); + } + 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 */ serial->config.baud_rate = ulBaudRate; serial->config.stop_bits = STOP_BITS_1; diff --git a/components/net/freemodbus/port/portserial_m.c b/components/net/freemodbus/port/portserial_m.c index f68794a617..cbe26bd0ae 100644 --- a/components/net/freemodbus/port/portserial_m.c +++ b/components/net/freemodbus/port/portserial_m.c @@ -53,6 +53,7 @@ static void serial_soft_trans_irq(void* parameter); BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity) { + rt_device_t dev = RT_NULL; /** * set 485 mode receive and transmit control IO * @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) rt_pin_mode(MODBUS_MASTER_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT); #endif - /* set serial name */ - if (ucPORT == 1) { -#if defined(RT_USING_UART1) || defined(RT_USING_REMAP_UART1) - extern struct rt_serial_device serial1; - 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 + if (ucPORT == 1) + { + dev = rt_device_find("uart1"); + } + 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 */ serial->config.baud_rate = ulBaudRate; @@ -211,6 +216,12 @@ static void serial_soft_trans_irq(void* parameter) { RT_WAITING_FOREVER, &recved_event); /* execute modbus callback */ 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(); + // } } } |
