Diod_Test/diode_tester/Core/MyLibs/trace.h

80 lines
3.1 KiB
C
Raw Normal View History

/**
**************************************************************************
* @file trace.h
* @brief Заголочный файл для работы с трассировкой.
**************************************************************************
* @addtogroup TRACE Trace defines
* @ingroup MYLIBS_DEFINES
* @brief Дефайны для работы с трассировкой
*************************************************************************/
#ifndef __TRACE_H_
#define __TRACE_H_
#include "mylibs_defs.h"
/**
* @addtogroup TRACE_SERIAL Serial trace defines
* @ingroup TRACE
* @brief Дефайны для работы с serial трассировкой
* @details Определяется дефайн my_printf() для работы с serial трассировкой:
- для RTT это будет вызов функции SEGGER_RTT_printf(), с подключением библиотеки SEGGER_RTT.h
- для SWO это будет просто printf(), но библиотеку STDOUT надо подключить самостоятельно:
@verbatim
Manage Run-Time Environment -> Compiler -> I/O -> STDOUT
@endverbatim
- Если трассировка отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
@{
*/
/* Выбор какой serial trace использовать */
#ifdef SERIAL_TRACE_ENABLE
#if defined(RTT_TRACE_ENABLE)
#undef SWO_TRACE_ENABLE
#include "SEGGER_RTT.h"
#define my_printf(...) SEGGER_RTT_printf(0, __VA_ARGS__)
#elif defined(SWO_TRACE_ENABLE)
#undef RTT_TRACE_ENABLE
#define my_printf(...) printf(__VA_ARGS__)
#else // NO_TRACE
#define my_printf(...)
#warning No trace is selected. Serial debug wont work.
#endif // RTT_TRACE_ENABLE/SWO_TRACE_ENABLE/NO_TRACE
#else //SERIAL_TRACE_ENABLE
#define my_printf(...)
#undef RTT_TRACE_ENABLE
#undef SWO_TRACE_ENABLE
#endif //SERIAL_TRACE_ENABLE
/** TRACE_SERIAL
* @}
*/
/**
* @addtogroup TRACE_GPIO GPIO trace defines
* @ingroup TRACE
* @brief Дефайны для работы с GPIO трассировкой
* @details Определяется дефайны для работы с GPIO трассировкой:
- TRACE_GPIO_RESET() - для сброса ножки GPIO (через BSRR)
- TRACE_GPIO_SET() - для выставления ножки GPIO (через BSRR)
- Если трассировка отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
@{
*/
#ifndef GPIO_TRACE_ENABLE
#define TRACE_GPIO_RESET(_gpio_,_pin_)
#define TRACE_GPIO_SET(_gpio_,_pin_)
#else
#define TRACE_GPIO_RESET(_gpio_,_pin_) (_gpio_)->BSRR = ((_pin_)<<16)
#define TRACE_GPIO_SET(_gpio_,_pin_) (_gpio_)->BSRR = (((_pin_)))
#endif //GPIO_TRACE_ENABLE
/** TRACE_GPIO
* @}
*/
#endif //__TRACE_H_