From bf5d9b4bae40c1e39a1fe1b6a7300ddf5f17a692 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 10 Nov 2020 16:30:26 +0100 Subject: [PATCH] logger interrupt --- cube/User/Inc/logger.h | 7 +++++++ cube/User/Src/logger.c | 10 ++++++++++ cube/User/Src/main2.c | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/cube/User/Inc/logger.h b/cube/User/Inc/logger.h index 5a67e59..936516b 100644 --- a/cube/User/Inc/logger.h +++ b/cube/User/Inc/logger.h @@ -1,8 +1,10 @@ #ifndef _LOGGER_H_ #define _LOGGER_H_ +#include +#define LOGGER_INTERRUPT typedef enum { LOG_HIGH, @@ -32,4 +34,9 @@ int coloredMsg(const t_logColor color, const char *format, ...); // return value can be ignored, it is only used in test int logExec(); +#ifdef LOGGER_INTERRUPT +void mbusCommTxCpltCallback(UART_HandleTypeDef *huart); +#endif + + #endif // _LOGGER_H_ diff --git a/cube/User/Src/logger.c b/cube/User/Src/logger.c index f2fc1e4..7f5df6c 100644 --- a/cube/User/Src/logger.c +++ b/cube/User/Src/logger.c @@ -35,6 +35,12 @@ void logFree() { ringbufferFree(&logBuffer); } +#ifdef LOGGER_INTERRUPT +void mbusCommTxCpltCallback(UART_HandleTypeDef *huart) { + logExec(); +} +#endif + int logExec() { int c = -1; #ifndef TEST @@ -45,7 +51,11 @@ int logExec() { #ifndef TEST // transfer to TX channel uint8_t cc = (uint8_t) c; +#ifndef LOGGER_INTERRUPT HAL_UART_Transmit(&debugUart, &cc, 1, HAL_MAX_DELAY); +#else + HAL_UART_Transmit_IT(&debugUart, &cc, 1); +#endif // LOGGER_INTERRUPT #endif // TEST } #ifndef TEST diff --git a/cube/User/Src/main2.c b/cube/User/Src/main2.c index fdce2f2..9c9bfa5 100644 --- a/cube/User/Src/main2.c +++ b/cube/User/Src/main2.c @@ -232,7 +232,12 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { if (huart == &mbusUart) { mbusCommTxCpltCallback(huart); + } +#ifdef LOGGER_INTERRUPT + else if (huart == &debugUart) { + debugTxCpltCallback(huart); } +#endif } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {