SOC常用的debug宏

#ifndef __LOG_OUT_H__ 
#define __LOG_OUT_H__

#ifdef  LOG_RTT_ENABLE
#include "SEGGER_RTT.h"

#define JBF_DEBUG_LOG_INIT() \
    do                       \
    {                        \
        SEGGER_RTT_Init();   \
    } while (0);

#define JBF_DEBUG_STRING_LOG(STRING) SEGGER_RTT_WriteString(0, RTT_CTRL_TEXT_BRIGHT_WHITE##STRING)
#define JBF_DEBUG_STRING_ERROR(STRING) SEGGER_RTT_WriteString(0, RTT_CTRL_TEXT_BRIGHT_RED##STRING)

#define JBF_DEBUG_ASSERT_PRINTF(filename, line)                                                       \
    do                                                                                                \
    {                                                                                                 \
        SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_RED##"@%s: Line:%d: Abort!!!\r\n", filename, line); \
    } while (0);

#define JBF_DEBUG_POINT_NULL_ERROR(ptr)                                                                                  \
    do                                                                                                                   \
    {                                                                                                                    \
        if (ptr == NULL)                                                                                                 \
        {                                                                                                                \
            (SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_RED##"@%s: Line:%d: NULL !!! %s", __FUNCTION__, __LINE__, #ptr)); \
        }                                                                                                                \
    } while (0);

#define JBF_DEBUG_PRINTF_LOG(format, arg...)                                                       \
    do                                                                                             \
    {                                                                                              \
        SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_GREEN##"@%s: Line:%d:", __FUNCTION__, __LINE__); \
        SEGGER_RTT_printf(0, format, ##arg);                                                       \
    } while (0);

#define JBF_DEBUG_PRINTF_HEX(str, ptr, len)                                                              \
    do                                                                                                   \
    {                                                                                                    \
        int i = 0;                                                                                       \
        SEGGER_RTT_printf(0, RTT_CTRL_TEXT_CYAN##"@%s: Line:%d: Hexs:%s ", __FUNCTION__, __LINE__, str); \
        for (i = 0; i < len; i++)                                                                        \
            SEGGER_RTT_printf(0, "%x ", ptr[i]);                                                         \
        SEGGER_RTT_printf(0, RTT_CTRL_RESET##"\r\n");                                                    \
    } while (0);

#define JBF_DEBUG_PRINTF_HEX_ERROR(str, ptr, len)                                                              \
    do                                                                                                         \
    {                                                                                                          \
        int i = 0;                                                                                             \
        SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_RED##"@%s: Line:%d: Hexs:%s ", __FUNCTION__, __LINE__, str); \
        for (i = 0; i < len; i++)                                                                              \
            SEGGER_RTT_printf(0, "%x ", ptr[i]);                                                               \
        SEGGER_RTT_printf(0, RTT_CTRL_RESET##"\r\n");                                                          \
    } while (0);

#define JBF_DEBUG_PRINTF_ERROR(format, arg...)                                                                  \
    do                                                                                                          \
    {                                                                                                           \
        SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_RED##"@%s: Line:%d:" RTT_CTRL_RESET, __FUNCTION__, __LINE__); \
        SEGGER_RTT_printf(0, format, ##arg);                                                                    \
    } while (0);

#define JBF_DEBUG_PRINTF_TIME(TIMER_T)                                 \
    do                                                                 \
    {                                                                  \
        JBF_DEBUG_PRINTF_LOG("%d/%d/%d %d/%d/%d %d\r\n", TIMER_T.year, \
                             TIMER_T.month,                            \
                             TIMER_T.day,                              \
                             TIMER_T.hour,                             \
                             TIMER_T.minute,                           \
                             TIMER_T.second,                           \
                             TIMER_T.week);                            \
    } while (0);

#else
 
#define JBF_DEBUG_STRING_LOG(STRING)          
#define JBF_DEBUG_STRING_ERROR(STRING)         
#define JBF_DEBUG_POINT_NULL_ERROR(ptr) 
#define JBF_DEBUG_PRINTF_LOG(format, arg...)                      
#define JBF_DEBUG_PRINTF_ERROR(format, arg...)  
#define JBF_DEBUG_PRINTF_TIME(TIMER_T)    
#define JBF_DEBUG_PRINTF_HEX(str, ptr, len)
#define JBF_DEBUG_PRINTF_HEX_ERROR(str, ptr, len)             
#define JBF_DEBUG_ASSERT_PRINTF(filename, line) 
#endif

#endif

猜你喜欢

转载自blog.csdn.net/loveboon1/article/details/131943368
soc