Check semaphore acquire status

This commit is contained in:
2026-06-18 15:04:17 +02:00
parent 33a2cc8fb4
commit a5067fd9a9
+20 -15
View File
@@ -129,21 +129,26 @@ void vUARTLogger(void *argument)
osDelay(1000); osDelay(1000);
#endif #endif
if (osMessageQueueGet(xUARTQueue, &message, NULL, queue_timeout) == osOK) if (osMessageQueueGet(xUARTQueue, &message, NULL, queue_timeout) == osOK)
{ {
osSemaphoreAcquire(xUARTDMASemaphore, osWaitForever); if (osSemaphoreAcquire(xUARTDMASemaphore, queue_timeout) == osOK)
int len = format_can_message(tx_buffer, message.source, &message); {
int len = format_can_message(tx_buffer, message.source, &message);
if (HAL_UART_Transmit_DMA(&huart1, (uint8_t*)tx_buffer, len) == HAL_OK) if (HAL_UART_Transmit_DMA(&huart1, (uint8_t*)tx_buffer, len) == HAL_OK)
{ {
DEBUG_PRINT("CAN frame sent via UART\r\n"); DEBUG_PRINT("CAN frame sent via UART\r\n");
} }
else else
{ {
osSemaphoreRelease(xUARTDMASemaphore); osSemaphoreRelease(xUARTDMASemaphore);
DEBUG_PRINT("HAL error, CAN frame NOT sent!\r\n"); DEBUG_PRINT("HAL error, CAN frame NOT sent!\r\n");
} }
} }
} else
{
DEBUG_PRINT("ERROR: Semaphore timeout! UART might be stuck in BUSY state.\r\n");
}
}
} }
/* END vUARTLoggerListen */ /* END vUARTLoggerListen */