diff --git a/Src/CanSerialPortFrame.c b/Src/CanSerialPortFrame.c index 1318108..c2aafcc 100644 --- a/Src/CanSerialPortFrame.c +++ b/Src/CanSerialPortFrame.c @@ -108,12 +108,18 @@ void vCanSerialPortFrameInit( env->can = CANx; - env->txAccessQueue[0] = osMutexNew(NULL); - env->txAccessQueue[1] = osMutexNew(NULL); - env->txAccessQueue[2] = osMutexNew(NULL); - if (!env->reInit) { env->reInit = true; + + if (env->txAccessQueue[0] == NULL) + env->txAccessQueue[0] = osMutexNew(NULL); + + if (env->txAccessQueue[1] == NULL) + env->txAccessQueue[1] = osMutexNew(NULL); + + if (env->txAccessQueue[2] == NULL) + env->txAccessQueue[2] = osMutexNew(NULL); + vCanSerialPortFrameInitStructure(env, CANx, rxBufferLength0, rxSnifferLength0, rxBufferLength1, rxSnifferLength1); @@ -479,7 +485,7 @@ uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameArtery *env, uint8_t *da uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameArtery *env, uint8_t *data, uint16_t size, uint32_t adr, - uint8_t canType, uint8_t mailBox, uint32_t timeout) { + uint8_t canType, uint8_t mailBox, uint32_t timeout) { if (osMutexAcquire(env->txAccessQueue[mailBox], 1000) == osOK) { uint16_t sent = 0;