您尚未登录。

楼主 # 2022-08-23 18:50:28

XMGroupe.
会员
注册时间: 2022-08-22
已发帖子: 12
积分: 237

[XMG助力国产]MC3172移植EasyLogger

[XMG助力国产生态]
@XMGroupe.

本文介绍MC3172移植EasyLogger教程。

本人从Github中下载EasyLogger源代码后,移植到MC3172时没有像移植到STM32那么顺利。

咨询感芯技术后得知,官方没有移植标准库,标准库的代码需要自己实现。

因此对EasyLogger源代码进行了一些修改:
1.移除了BUF和ASYNC;
2.标准库的函数在elog.c中进行了实现(能力有限,有些代码可能不是最优化版本);
3.标准库的变量在elog.h中进行了声明;
4.代码的打印分隔符已经修改完,移植完可以直接使用;
5.代码添加后需要进行printf重定向,头文件引用在elog.c中;
6.elog_port_output中已经添加了输出函数。

void elog_port_output(const char *log, size_t size) {
    
    /* add your code here */
    printf_("%.*s", size, log);
}

*printf重定向方法可以参照论坛中的帖子添加开源printf库
*串口调试过程中出现的问题可以参照【调试记录】调整芯片主频之后串口需要修改串口初始化代码

移植流程:
1.将修改后的EasyLogger文件夹放入工程中;
2.修改printf重定向函数引用,在elog.c中

#include "../USER_CODE/printf.h"
#include "../USER_CODE/uart.h"

3.配置线程,可以参考官方给出的极简开发手册
4.在主函数中引用elog.h的头文件
5.在线程中初始化elog函数,初始化方法可以参考如下代码

    /* 初始化elog */
    elog_init();
    elog_set_text_color_enabled(true);//打开颜色模式
    elog_set_fmt(ELOG_LVL_ASSERT, ELOG_FMT_ALL);
    elog_set_fmt(ELOG_LVL_ERROR, ELOG_FMT_LVL | ELOG_FMT_TAG);
    elog_set_fmt(ELOG_LVL_WARN, ELOG_FMT_LVL | ELOG_FMT_TAG);
    elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_LVL | ELOG_FMT_TAG);
    elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_ALL & ~(ELOG_FMT_TIME | ELOG_FMT_P_INFO | ELOG_FMT_T_INFO));
    elog_set_fmt(ELOG_LVL_VERBOSE, ELOG_FMT_ALL);
    elog_start();

    log_a("Hello EasyLogger!");
    log_e("Hello EasyLogger!");
    log_w("Hello EasyLogger!");
    log_i("Hello EasyLogger!");
    log_d("Hello EasyLogger!");
    log_v("Hello EasyLogger!");

6.下载MobaXterm后配置端口进行测试

最终效果

FluxBB bbcode

文件包
https://gitee.com/sxm90/MC3172/tree/master/EasyLogger

离线

#1 2022-08-23 19:43:53

support_gxchip
Moderator
注册时间: 2022-07-26
已发帖子: 58
积分: 103

Re: [XMG助力国产]MC3172移植EasyLogger

太厉害了,这次调试也有方案了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn