杰里701N---串口打印

1.打开lib库总开关

// app_config.h
#ifndef APP_CONFIG_H
#define APP_CONFIG_H

/*
* 系统打印总开关
*/


#ifdef CONFIG_RELEASE_ENABLE
#define LIB_DEBUG    1
#else
#define LIB_DEBUG    1
#endif
#define CONFIG_DEBUG_LIB(x)         (x & LIB_DEBUG)
#define CONFIG_DEBUG_ENABLE

需要修改点:

  1. 宏LIB_DEBUG配置为1.
  2. 宏CONFIG_DEBUG_ENABLE需要被定义.

2.某些模块的的调试信息可能还有自己的单独开关

// app_config.c
const char log_tag_const_v_SETUP AT(.LOG_TAG_CONST) = FALSE;   // verbose, 模块中比较冗余的信息。
const char log_tag_const_i_SETUP AT(.LOG_TAG_CONST) = FALSE;   // info, 模块中一些基本的状态信息。
const char log_tag_const_w_SETUP AT(.LOG_TAG_CONST) = FALSE;   // debug, 模块中用于定位问题的基本信息。
const char log_tag_const_d_SETUP AT(.LOG_TAG_CONST) = TRUE;    // warning, 模块中用于定位问题的警告信息。
const char log_tag_const_e_SETUP AT(.LOG_TAG_CONST) = TRUE;    // error, 模块中用于定位问题的错误信息。

3.使能硬件驱动开关

// xxx_cfg.h
//*********************************************************************************//
//                                 UART配置                                        //
//*********************************************************************************//
#define TCFG_UART0_ENABLE					ENABLE_THIS_MOUDLE                     //串口打印模块使能
#define TCFG_UART0_RX_PORT					NO_CONFIG_PORT                         //串口接收脚配置(用于打印可以选择NO_CONFIG_PORT)
#define TCFG_UART0_TX_PORT  				IO_PORTA_05                             //串口发送脚配置
#define TCFG_UART0_BAUDRATE  				1000000                                //串口波特率配置

4.添加自己的调试信息

printf

printf 是计算机行业内通用的终端打印信息的标准接口, 在开发环境中添加如下头文件后即可使用

#include "generic/printf.h"

​ 相应的,如果有需要打印一块内存的十六进制数据,可使用put_buf接口,使用示例如下;

#include "generic/printf.h"

void printf_foo(void)
{
    int tmp[50];
    printf("Test Demo: %s:%d\n", __func__, __LINE__);

    memset(tmp, 0x5A, sizeof(tmp));
    put_buf(tmp, sizeof(tmp));

    return;
}
log_xxx族接口

​ log_xxx族接口与printf的区别是该接口可以分模块控制,以及输出信息可以带模块名前缀,可以快速定位到对应模块输出的信息。举例文件举例文件 sdk/apps/hid/app_main.c`, 使用步骤如下:

​ 在模块对应C文件开头增加如下修改

#define LOG_TAG_CONST       APP
#define LOG_TAG             "[APP]"
#define LOG_ERROR_ENABLE
#define LOG_DEBUG_ENABLE
#define LOG_INFO_ENABLE
/* #define LOG_DUMP_ENABLE */
#define LOG_CLI_ENABLE
#include "debug.h"

修改注意点:

  • 定义LOG_TAG_CONST宏的命令与模块Debug名相同。
  • debug.h 文件被include的位置必须位于这些宏定义之后。

**2.**增加模块打印开关控制变量, 文件夹路径 apps/xxx/config/ 用户应根据自己模块的属性放到合适的文件, 举例将app模块的控制开关放在 apps/hid/config/log_config.c`文件, 增加变量声明如下:

const char log_tag_const_v_APP AT(.LOG_TAG_CONST) = 0;
const char log_tag_const_i_APP AT(.LOG_TAG_CONST) = 1;
const char log_tag_const_d_APP AT(.LOG_TAG_CONST) = 1;
const char log_tag_const_w_APP AT(.LOG_TAG_CONST) = 1;
const char log_tag_const_e_APP AT(.LOG_TAG_CONST) = 1;

**3.**在对应模块添加调试信息,可用接口示例如下:

void log_foo(void)
 {
    int tmp[10];

    log_info("I am info Message.\n");
    log_debug("I am debug Message.\n");
    log_error("I am error Message.\n");

    memset(tmp, 0x5A, sizeof(tmp));
    log_info_hexdump(tmp, sizeof(tmp)); //输出十六进制数据
    log_error_hexdump(tmp, sizeof(tmp)); //输出十六进制数据

    return;
 }

上述示例输出信息如下:

void log_foo(void)
 2 {
 3    int tmp[10];
 4
 5    log_info("I am info Message.\n");
 6    log_debug("I am debug Message.\n");
 7    log_error("I am error Message.\n");
 8
 9    memset(tmp, 0x5A, sizeof(tmp));
10    log_info_hexdump(tmp, sizeof(tmp)); //输出十六进制数据
11    log_error_hexdump(tmp, sizeof(tmp)); //输出十六进制数据
12
13    return;
14 }

**4.**系统时间戳

​ 在输出的log中存在系统时间戳,该时间戳代表输出该log时距离系统的上电时间,如果用户不需要输出该时间戳,可以通过修改文件 sdk/apps/xxx/config/lib_system_config.c

///打印是否时间打印信息
const int config_printf_time         = 1;
  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值