diff --git a/freemodbus/port/portserial_m.c b/freemodbus/port/portserial_m.c index 78e3ff0..7fbe0ac 100644 --- a/freemodbus/port/portserial_m.c +++ b/freemodbus/port/portserial_m.c @@ -78,6 +78,14 @@ static BOOL xMBMasterPortRxSemaInit( void ) return TRUE; } +static void vMBMasterPortRxSemaClose( void ) +{ + if (xMasterSemaRxHandle) { + vSemaphoreDelete(xMasterSemaRxHandle); + xMasterSemaRxHandle = NULL; + } +} + static BOOL xMBMasterPortRxSemaTake( LONG lTimeOut ) { BaseType_t xStatus = pdTRUE; @@ -337,6 +345,7 @@ BOOL xMBMasterPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, void vMBMasterPortSerialClose(void) { + vMBMasterPortRxSemaClose(); (void)vTaskDelete(xMbTaskHandle); ESP_ERROR_CHECK(uart_driver_delete(ucUartNumber)); }